Обработка исключений в ОС Windows
Структурная обработка исключений
Фреймовая обработка Возможна: средствами языка C++, средствами Windows (SEH) - Structured Exception Handling (SEH) Различия: SEH пригоден как для программных, так и для аппаратных исключений, в отличие от средств С++ В SEH исключение – это ошибка при выполнении программы, в С++ - это объект произвольного типа, который может выбросить программа , используя оператор throw. Обработчик исключения catch может рассматриваться как функция с одним параметром, кот. выполняется только при совпадении типа ее параметра с типом выброшенного исключения По-разному раскручивается стек Суть механизма SEH В программе выделяется блок кода – фрейм, в котором может произойти исключение (охраняемый код) За фреймом размещается код обработчика Далее - первая инструкция, исполняемая после выполнения обработчика Используемые ключевые слова C++, различаемые компилятором MS: _try, _except для фрейма и обработчика соответственно Структура программного фрагмента _try { //охраняемый код } _except (выражение-фильтр) { //код обработки исключения } Значения (выражения-фильтра): EXCEPTION_EXECUTE_HANDLER управление передается обработчику EXCEPTION_CONTINUE_SEARCH продолжить поиск обработчика EXCEPTION_EXECUTE_EXECUTION управление передается в точку прерывания программы GetExceptionCode, GetExceptionInformation – функции для получения информации об исключении, м.б. использованны в выражении-фильтре Не допускается в SEH: использование оператора goto для передачи управления внутрь фрейма или обработчика Переменные, объявленные в фрейме и обработчике - локальные