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