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


Макрос АномальнойTermination

Указывает, завершается ли блок __try обработчика завершения обычным образом. Функцию можно вызывать только из __finally блока обработчика завершения.

Примечание

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

Синтаксис

BOOL AbnormalTermination(void);

Параметры

Этот макрос не имеет параметров.

Возвращаемое значение

Если блок __try прерван ненормально, возвращаемое значение ненулевое.

Если блок __try завершается нормально, возвращаемое значение равно нулю.

Комментарии

Блок __try завершается обычно, только если выполнение покидает блок последовательно после выполнения последней инструкции в блоке. Операторы (например , return, goto, continue или break), которые приводят к тому, что выполнение __try блока приведет к ненормальному завершению блока. Это происходит, даже если такой оператор является последним оператором в блоке __try .

Ненормальное завершение блока __try приводит к тому, что система выполняет поиск назад по всем кадрам стека, чтобы определить, должны ли вызываться какие-либо обработчики завершения. Это может привести к выполнению сотен инструкций, поэтому важно избежать ненормального завершения блока __try из-за возврата, goto, продолжения или прерывания инструкции. Обратите внимание, что эти инструкции не создают исключение, даже если завершение является ненормальным.

Чтобы избежать ненормального завершения, выполнение должно продолжаться до конца блока. Можно также выполнить инструкцию __leave . Инструкция __leave позволяет немедленно прекратить блок __try , не вызывая аномального завершения и штрафа за производительность. Проверьте документацию компилятора, чтобы определить, поддерживается ли инструкция __leave .

Требования

Требование Значение
Минимальная версия клиента
Windows XP [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]

См. также раздел

Структурированные функции обработки исключений

Общие сведения о структурированной обработке исключений