Dynamic Semantics<2> (GNAT Reference Manual)

#### 17.3.11.3 Dynamic Semantics ¶

Statements in the optional `sequence_of_statements` contained in the `finally` branch will be executed unconditionally, after the main `sequence_of_statements` is executed, and after any potential `exception_handler` is executed.

If an exception is raised in the finally part, it cannot be caught by the `exception_handler`.

Abort/ATC (asynchronous transfer of control) cannot interrupt a finally block, nor prevent its execution, that is the finally block must be executed in full even if the containing task is aborted, or if the control is transferred out of the block.