Поделиться через


Синтаксис обработчика

В этом разделе описывается синтаксис и использование структурированной обработки исключений, реализованной в компиляторе оптимизации Microsoft C/C++. Следующие ключевое слово интерпретируются компилятором как часть структурированного механизма обработки исключений.

Ключевое слово Description
__try Начинает защищенный текст кода. Используется с __except ключевое слово для создания обработчика исключений или с __finally ключевое слово для создания обработчика завершения.
__except Начинает блок кода, который выполняется только при возникновении исключения в связанном __try блоке.
__finally Начинает блок кода, который выполняется всякий раз, когда поток элемента управления покидает связанный __try блок.
__leave Позволяет немедленно прекратить работу блока __try без возникновения ненормального завершения и его штрафа за производительность.

 

Компилятор также интерпретирует функции GetExceptionCode, GetExceptionInformation и AbnormalTermination как ключевое слово, а их использование за пределами соответствующего синтаксиса обработки исключений создает ошибку компилятора. Ниже приведены краткие описания этих функций.

Function Description
GetExceptionCode Возвращает код, определяющий тип исключения. Эту функцию можно вызывать только из выражения фильтра или блока обработчика исключений.
GetExceptionInformation Возвращает указатель на EXCEPTION_POINTERS структуру, содержащую указатели на запись контекста и запись исключения. Эту функцию можно вызывать только из выражения фильтра обработчика исключений.
Аномальнаятерминация Указывает, оставил ли поток управления связанный блок __try последовательно после выполнения последней инструкции в блоке. Эту функцию можно вызывать только из блока __finally обработчика завершения.