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. |