#909 – When a finally Block Executes
August 15, 2013 1 Comment
The purpose of a finally block is to define some code that should always execute, whether or not an exception occurs while executing code in the corresponding try block.
Exactly when a finally block executes depends on several things:
- If the code in the try block executes without throwing an exception or transferring control elsewhere
- The finally block executes after the code in the try block
- If an exception occurs while executing code in the try block ..
- .. and the exception is caught in a catch block associated with the same try statement — the body of the catch block executes, followed by the body of the finally block
- .. and the exception is not caught — the body of the finally block executes before the exception propagates back up the call stack
- If a goto or return statement is encountered in the try block
- The finally block executes before control is transferred