Структурные исключения 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:
Структурные исключения (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)
Комментарии
Отправить комментарий