Выражения фильтров и их значения

Выражения фильтров и их значения

Параметр выражение_фильтра в операторе except вычисляется сразу же после того, как возникает исключение. В качестве выражения может выступать литеральная константа, вызов функции фильтра (filter function) или условное выражение. В любом случае выражение должно возвращать одно из следующих трех значений:

1. EXCEPTION_EXECUTE_HANDLER — система выполняет операторы блока обработки исключений, как показано на рис. 4.1 (см. программу 4.1). Это соответствует обычному случаю.

2. EXCEPTION_CONTINUE_SEARCH — система игнорирует данный обработчик исключений и пытается найти обработчик исключений в охватывающем блоке, продолжая этот процесс аналогичным образом до тех пор, пока не будет найден обработчик исключений.

3. EXCEPTION_CONTINUE_EXECUTION — система немедленно возвращает управление в точку, в которой возникло исключение. В случае некоторых исключений дальнейшее выполнение программы невозможно, но если такие попытки делаются, то генерируется повторное исключение.

Рис. 4.1. SEH, блоки и функции

Ниже приведен простой пример, в котором обработчик исключений используется для удаления временного файла в тех случаях, когда исключение возникает в теле цикла. Заметьте, что ключевое слово __try может быть применено к любому блоку, включая блоки, связанные с операторами while, if или любым другим оператором ветвления. В данном примере возникновение любого исключения приводит к удалению временного файла и закрытию дескриптора, после чего выполнение цикла возобновляется.

GetTempFileName(TempFile, …);

while (…) __try {

 hFile = CreateFile(TempFile, …, OPEN_ALWAYS, …);

 SetFilePointer(hFile, 0, NULL, FILE_END);

 WriteFile(hFile, …);

 i = *p; /* В этом месте программы возможно возникновение исключения адресации. */

 CloseHandle (hFile);

 …

} __except (EXCEPTION_EXECUTE_HANDLER) {

 CloseHandle(hFile);

 DeleteFile(TempFile);

 /* Переход к выполнению очередной итерации цикла. */

}

/* Сюда передается управление после нормального завершения цикла.

 Каждый раз при возникновении исключения дескриптор временного файла  закрывается, а сам файл удаляется. */

Ниже описана логика приведенного выше фрагмента кода.

• На каждой итерации цикла в конце файла добавляются новые данные.

• В случае возникновения исключения во время выполнения итерации цикла все данные, накопленные во временном файле, будут уничтожены, и если еще остались невыполненные итерации, то во временном файле начнут накапливаться новые данные.

• В случае возникновения исключения на последней итерации файл прекращает существование. В любом случае файл будет содержать все данные, сгенерированные после предыдущего исключения.

• В примере отмечена лишь одна точка программы, в которой возможно возникновение исключения, хотя исключения могут возникнуть в любой точке тела цикла.

• Чтобы гарантировать закрытие дескриптора файла, это делается как при выходе из цикла, так и перед началом очередной итерации цикла.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Глава 15 Использование фильтров

Из книги Photoshop CS2 и цифровая фотография (Самоучитель). Главы 15-21. автора Солоницын Юрий

Глава 15 Использование фильтров Цифровым фотографиям и сканированным изображениям нередко присущи такие недостатки и искажения, как недостаточная или избыточная резкость и наличие посторонних шумов.Данная глава будет посвящена тому, как избавиться от этих недостатков


1. Пустые значения (Empty-значения)

Из книги Базы данных: конспект лекций автора Автор неизвестен

1. Пустые значения (Empty-значения) Пустое значение – это просто одно из множества возможных значений какого-то вполне определенного типа данных.Перечислим наиболее «естественные», непосредственные пустые значения (т. е. пустые значения, которые мы могли бы выделить


2. Неопределенные значения ( Null-значения)

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

2. Неопределенные значения (Null-значения) Слово Null используется для обозначения неопределенных значений в базах данных.Чтобы лучше понять, какие значения понимаются под неопределенными, рассмотрим таблицу, являющуюся фрагментом базы данных: Итак, неопределенное


Использование фильтров

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Использование фильтров Вы можете встретиться с задачей отбора записей в объемном списке данных, что занимает продолжительное время. Для этого проще всего использовать встроенные возможности фильтрации данных. Excel 2007 обладает простыми и удобными средствами установки


Использование фильтров

Из книги Adobe Fotoshop CS в примерах (III-IV) автора Топорков Сергей Сергеевич

Использование фильтров С помощью фильтра можно отбирать для отображения в таблице только записи, которые отвечают определенным критериям. Для установки фильтров в Access 2007 существует несколько способов.Рассмотрим их.Фильтр по выделенному значению. Этот способ позволяет


Урок 17. Работа 3D-фильтров

Из книги Яндекс для всех автора Абрамзон М. Г.

Урок 17. Работа 3D-фильтров Фильтр 3D TransformДанный фильтр появился в ранних версиях. С его помошью можно создавать трехмерные объекты на любой поверхности. К сожалению, в новой версии Photoshop он отсутствует в стандартном наборе. Тем не менее фильтр не пропал бесследно. Он


Урок 24. Галерея фильтров

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Урок 24. Галерея фильтров Фильтры Grain, Neon Glow, Glowing Edges, Motion BlurШаг 1Создайте новое изображение произвольного размера, например 1024x768 — стандартный размер обоев на рабочем столе. Рис. 24.1. Галерея фильтров с примененным фильтром GrainИзображение должно быть белым. Обязательно


Использование фильтров Procmail

Из книги Фотоприколы с помощью Photoshop автора Гурский Юрий Анатольевич

Использование фильтров Procmail Серверы SMTP, описанные в данной главе, могут обрабатывать письма, отправленные с внешних компьютеров. До сих пор мы не рассматривали вопрос о том, что происходит с письмом после того, как оно принимается сервером. В простейшем случае почтовый


2.2.4. Настройка фильтров

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

2.2.4. Настройка фильтров Фильтры можно разделить на три типа:? "черные" списки;? "белые" списки;? морфологические фильтры.Черные и белые списки содержат почтовые адреса, которые вы заносите в них сами. Работают они, как понятно из их названия, с противоположным эффектом.


Создание фильтров

Из книги Photoshop CS4 автора Жвалевский Андрей Валентинович

Создание фильтров Для создания фильтров нам понадобится "универсальная" панель Properties. Только в этом случае нам понадобится переключиться на вкладку Filters этой панели (рис. 9.1). Также можно включить пункт-переключатель Filters подменю Properties меню Window. В левой части панели Properties


Урок 15 Царство фильтров

Из книги автора

Урок 15 Царство фильтров Вы, наверное, удивитесь, но, помимо многочисленных инструментов рисования и редактирования, рассмотренных нами в предыдущих уроках, Photoshop вооружен огромным количеством дополнительных встроенных программ (плагинов), каждая из которых выполняет


Написание фильтров BLOB

Из книги автора

Написание фильтров BLOB Написание фильтров BLOB требует точно таких же усилий по управлению памятью и потоками, а также того же порядка действий, что и другие внешние функции, а именно:1. Напишите фильтры и скомпилируйте их в объектные коды.2. Создайте совместно используемую


Обзор групп фильтров

Из книги автора

Обзор групп фильтров В Photoshop просто огромное количество фильтров, исчисляемое десятками. Поэтому нет ничего удивительного в том, что разработчики разделили их на категории. Благодаря этому найти нужный фильтр не составляет труда. Если же вы не знаете, какой фильтр вам