Инструкция внутри блока 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 |