Handler Syntax
This section describes the syntax and usage of structured exception handling as implemented in the Microsoft C/C++ Optimizing Compiler. The following keywords are interpreted by the compiler as part of the structured exception-handling mechanism.
Keyword |
Description |
__try |
Begins a guarded body of code. Used with the __except keyword to construct an exception handler, or with the __finally keyword to construct a termination handler. |
__except |
Begins a block of code that is executed only when an exception occurs within its associated __try block. |
__finally |
Begins a block of code that is executed whenever the flow of control leaves its associated __try block. |
__leave |
Allows for immediate termination of the __try block without causing abnormal termination and its performance penalty. |
The compiler also interprets the GetExceptionCode, GetExceptionInformation, and AbnormalTermination functions as keywords, and their use outside the appropriate exception-handling syntax generates a compiler error. The following are brief descriptions of these functions.
Function |
Description |
GetExceptionCode |
Returns a code that identifies the type of exception. This function can be called only from within the filter expression or the exception-handler block. |
GetExceptionInformation |
Returns a pointer to an EXCEPTION_POINTERS structure containing pointers to the context record and the exception record. This function can be called only from within the filter expression of an exception handler. |
AbnormalTermination |
Indicates whether the flow of control left the associated __try block sequentially after executing the last statement in the block. This function can be called only from within the __finally block of a termination handler. |