Termination-Handler Syntax
The
try and
finally keywords are used to construct a termination handler. The following example
shows the structure of a
try-
finally termination handler.
try {
// guarded body of code
}
finally {
// finally block
}
As with the
try-
except statement, both the
try block and the
finally block require braces ({}), and using a
goto statement to jump into either block is not permitted.
The
try block contains the guarded body of code that is protected by the termination
handler. A function can have any number of
try-
finally statements, and these termination handling structures can be nested within
the same function or in different functions.
The
finally block is executed whenever the flow of control leaves the
try block. However, the
finally block is not executed if either the
ExitProcess or
ExitThread function is called from within the
try block.
If execution of the
try block terminates because of an exception that invokes the exception-handling
block of a frame-based exception handler, the
finally block is executed before the exception-handling block is executed. Similarly,
a call to the standard C
longjmp function from the
try block causes execution of the
finally block before execution resumes at the target of the
longjmp operation. If
try block execution terminates due to a normal control statement (
return,
break,
continue, or
goto), the
finally block is executed.
The
AbnormalTermination function can be used within the
finally block to determine whether the
try block terminated sequentially

that is, whether it reached the closing brace (}). Leaving the
try block because of a call to
longjmp, a jump to an exception handler, or a
return,
break,
continue, or
goto statement, is considered an abnormal termination. Note that failure to
terminate sequentially causes the system to search backward through all stack frames
to determine whether any termination handlers must be called. This can result
in performance degradation due to the execution of hundreds of instructions.
Execution of the
finally block can terminate by any of the following means.
- Execution of the last statement in the block and continuation to the next
instruction
- Use of a normal control statement (return, break, continue, or goto)
- Use of longjmp or a jump to an exception handler
The
finally block is executed in the context of the function in which the
try-
finally statement is located. This means that the
finally block can access that function's local variables.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples