Синтаксис обработчика
В этом разделе описывается синтаксис и использование структурированной обработки исключений, реализованной в компиляторе оптимизации Microsoft C/C++. Следующие ключевое слово интерпретируются компилятором как часть структурированного механизма обработки исключений.
Ключевое слово | Description |
---|---|
__try | Начинает защищенный текст кода. Используется с __except ключевое слово для создания обработчика исключений или с __finally ключевое слово для создания обработчика завершения. |
__except | Начинает блок кода, который выполняется только при возникновении исключения в связанном __try блоке. |
__finally | Начинает блок кода, который выполняется всякий раз, когда поток элемента управления покидает связанный __try блок. |
__leave | Позволяет немедленно прекратить работу блока __try без возникновения ненормального завершения и его штрафа за производительность. |
Компилятор также интерпретирует функции GetExceptionCode, GetExceptionInformation и AbnormalTermination как ключевое слово, а их использование за пределами соответствующего синтаксиса обработки исключений создает ошибку компилятора. Ниже приведены краткие описания этих функций.
Function | Description |
---|---|
GetExceptionCode | Возвращает код, определяющий тип исключения. Эту функцию можно вызывать только из выражения фильтра или блока обработчика исключений. |
GetExceptionInformation | Возвращает указатель на EXCEPTION_POINTERS структуру, содержащую указатели на запись контекста и запись исключения. Эту функцию можно вызывать только из выражения фильтра обработчика исключений. |
Аномальнаятерминация | Указывает, оставил ли поток управления связанный блок __try последовательно после выполнения последней инструкции в блоке. Эту функцию можно вызывать только из блока __finally обработчика завершения. |