Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Wiki Markup
            Never use {{return}}, {{break}}, {{continue}}, or {{throw}} statements within a {{finally}} block. When program execution enters a {{try}} block that has a {{finally}} block, the {{finally}} block always executes, regardless of whether the {{try}} block (or any associated {{catch}} blocks) executes to completion. Statements that cause the {{finally}} block to terminate abruptly also cause the {{try}} block to terminate abruptly and consequently masksuppress any exception thrown from the {{try}} or {{catch}} blocks \[[JLS 2005|http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.20.2]\].

...

ERRO4-EX0: Control flow statements whose destination is within the finally block are perfectly acceptable.

For instanceexample, the following code does not violate this rule, because the break statement exits the while loop, but not the finally block.

...

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="bc5206e6a7b0fe01-fe973f71-4bcf409a-806e8f8e-6226fc23f398ad68046ce0d1"><ac:plain-text-body><![CDATA[

[[Bloch 2005

AA. Bibliography#Bloch 05]]

Puzzle 36. Indecision

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="fadd43b56277b7c0-4f2e7775-4b7b4d1f-8ec3acfa-d095c4f1496f960141f95297"><ac:plain-text-body><![CDATA[

[[Chess 2007

AA. Bibliography#Chess 07]]

8.2, Managing Exceptions, The Vanishing Exception

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="a9e1e553b3f15df8-456b75b8-458c4895-b3b3b93f-6d7e53539548ea4c4a27e073"><ac:plain-text-body><![CDATA[

[[JLS 2005

AA. Bibliography#JLS 05]]

[§14.20.2, Execution of try-catch-finally

http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.20.2]

]]></ac:plain-text-body></ac:structured-macro>

...