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


Время обработки ошибок. сводка

Выполняется обработчик завершения независимо от того, например __try блок выписки завершен.Причины переходе из __try блок, a longjmp выписка, управление переключений из блока и очистки стека из-за обработке ошибок.

ПримечаниеПримечание

Visual C++ поддерживает 2 формы setjmp и longjmp выписки.Быстрая версия пропускает завершение обработки, но является более эффективным.Для использования этой версии, включаемого файла SETJMP.H.Другая версия поддерживает завершение при обработке как описано в предыдущем абзацем.Для использования этой версии, включите файл SETJMPEX.H.Увеличение производительности быстрой конфигурации оборудования, зависят от версии.

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

Если причина прерывания исключение, система должна сначала выполнить часть фильтрации одного или нескольких обработчиков исключений перед определение которого необходимо завершить.Порядок событий:

  1. Возникает исключение.

  2. Система проверяет иерархию активных обработчиков исключений и выполняет фильтр обработчика с более высоким приоритетом. это последнее установленный обработчик исключений и наиболее глубоко который предоставил, с точки зрения blocks и вызовов функций.

  3. Если этот фильтр передает возвращает элемент управления (0), то процесс продолжается до тех пор, пока не будет найден фильтр, который не передает элемент управления.

  4. Если этот фильтр возвращает 1, то выполнение продолжается, на котором возникло исключение и завершение не производится.

  5. Если фильтр возвращает значение 1, то следующих событий:

    • Система очистки стека, очистя все кадры стека между в данный момент кодом, на котором возникло исключение () и кадр стека, содержащий обработчик исключений, приобретая элемент управления.

    • Так как стек размотан, выполняется каждый обработчик завершения в стеке.

    • Сам обработчик исключений.

    • Элемент управления передает строку кода после конца данного обработчика исключений.

См. также

Ссылки

Написать обработчик завершения

Структурная обработка исключений (C++)