Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows


           

Инструкция внутри блока try функции


Попробуем модифицировать нашу функцию и посмотрим, что будет

DWORD Funcmeister2()
{

DWORD dwTemp = 0;

// 1 Нто-то делаем здесь

...

__try
{

// 2 Выполняем какую-то операцию

dwTemp = 5 / dwTemp;
// генерирурт исключение

dwTemp += 10;
// никогда не выполняется

}

__except ( /* 3 Проверяем фильтр */ EXCEPTION_EXECUTE_HANDLER)
{

// 4. Обрабатываем исключение

MessageBeep(0)

...

}

// 5 Продолжаем что-то делать

return(dwТemp); }



Рис. 24-1. Так система обрабатывает исключения

Инструкция внутри блока try функции Funcmeister2 пытается поделить 5 на 0. Перехватив это событие, процессор возбуждает аппаратное исключение Тогда опе рационная система ищст начало блока except и проверяет выражение, указанное в качестве фильтра исключении, оно должно дать один из трех идентификаторов, оп ределенных в заголовочном Windows-файле Exept.h



























Идентификатор



Значение



EXCEPTION_EXECUTE_HANDLER



1



EXCEPTION_CONTINUE_SEARCH



0



EXCEPTION_CONTINUE_EXECUTION



-1



Далее мы обсудим, как эти идентификаторы изменяют выполнение потока. Читая следующие разделы, посматривайте на блок-схему на рис. 24-1, которая иллюстриру ет операции, выполняемые системой после генерации исключения


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий