Инструкция внутри блока 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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий