Структурные исключения Windows

Стал ближе знакомиться с компилятором MSVC и программированием для Windows и узнал о такой виндовой фиче как "Структурные исключения". Если вкратце, то вот:

Структурные исключения (SEH) - Асинхронные исключения, использовались для изначально для языка Си, обрабатывают такие ситуации, как деление на ноль, обращение к недоступному учаcтку памяти. С флагом /EHa, структурные исключения начинают конвертиться в типизированные исключения и могут ловиться в обычных try-catch (в доках не рекомендуют это делать). Без флага, ловятся специальной конструкцией __try{}__except{}__finally{}.
https://docs.microsoft.com/en-us/cpp/cpp/exception-handling-differences?view=vs-2017
https://docs.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model?view=vs-2017

Vector Exception Handling - это способ обработки SEH, вызываются функции обработчики одна за другой при срабатывании структурного исключения, перед разворачиванием стека.
https://docs.microsoft.com/en-us/windows/desktop/Debug/vectored-exception-handling

Крутая статья на тему http://crashrpt.sourceforge.net/docs/html/exception_handling.html

Последовательность вызова функций после std::terminate:
std::terminate -> std::abort -> SIGABRT -> std::exit(3)

Комментарии

Популярные сообщения из этого блога

Siege Up! Editor (beta)

STM32F4 и программный выход в DFU

Git и Yandex.Disk