Выражения фильтров и их значения
Выражения фильтров и их значения
Параметр выражение_фильтра в операторе 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);
/* Переход к выполнению очередной итерации цикла. */
}
/* Сюда передается управление после нормального завершения цикла.
Каждый раз при возникновении исключения дескриптор временного файла закрывается, а сам файл удаляется. */
Ниже описана логика приведенного выше фрагмента кода.
• На каждой итерации цикла в конце файла добавляются новые данные.
• В случае возникновения исключения во время выполнения итерации цикла все данные, накопленные во временном файле, будут уничтожены, и если еще остались невыполненные итерации, то во временном файле начнут накапливаться новые данные.
• В случае возникновения исключения на последней итерации файл прекращает существование. В любом случае файл будет содержать все данные, сгенерированные после предыдущего исключения.
• В примере отмечена лишь одна точка программы, в которой возможно возникновение исключения, хотя исключения могут возникнуть в любой точке тела цикла.
• Чтобы гарантировать закрытие дескриптора файла, это делается как при выходе из цикла, так и перед началом очередной итерации цикла.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Использование фильтров Procmail
Использование фильтров Procmail Серверы SMTP, описанные в данной главе, могут обрабатывать письма, отправленные с внешних компьютеров. До сих пор мы не рассматривали вопрос о том, что происходит с письмом после того, как оно принимается сервером. В простейшем случае почтовый
2.2.4. Настройка фильтров
2.2.4. Настройка фильтров Фильтры можно разделить на три типа:? "черные" списки;? "белые" списки;? морфологические фильтры.Черные и белые списки содержат почтовые адреса, которые вы заносите в них сами. Работают они, как понятно из их названия, с противоположным эффектом.
Урок 17. Работа 3D-фильтров
Урок 17. Работа 3D-фильтров Фильтр 3D TransformДанный фильтр появился в ранних версиях. С его помошью можно создавать трехмерные объекты на любой поверхности. К сожалению, в новой версии Photoshop он отсутствует в стандартном наборе. Тем не менее фильтр не пропал бесследно. Он
Урок 24. Галерея фильтров
Урок 24. Галерея фильтров Фильтры Grain, Neon Glow, Glowing Edges, Motion BlurШаг 1Создайте новое изображение произвольного размера, например 1024x768 — стандартный размер обоев на рабочем столе. Рис. 24.1. Галерея фильтров с примененным фильтром GrainИзображение должно быть белым. Обязательно
Урок 15 Царство фильтров
Урок 15 Царство фильтров Вы, наверное, удивитесь, но, помимо многочисленных инструментов рисования и редактирования, рассмотренных нами в предыдущих уроках, Photoshop вооружен огромным количеством дополнительных встроенных программ (плагинов), каждая из которых выполняет
Глава 15 Использование фильтров
Глава 15 Использование фильтров Цифровым фотографиям и сканированным изображениям нередко присущи такие недостатки и искажения, как недостаточная или избыточная резкость и наличие посторонних шумов.Данная глава будет посвящена тому, как избавиться от этих недостатков
Обзор групп фильтров
Обзор групп фильтров В Photoshop просто огромное количество фильтров, исчисляемое десятками. Поэтому нет ничего удивительного в том, что разработчики разделили их на категории. Благодаря этому найти нужный фильтр не составляет труда. Если же вы не знаете, какой фильтр вам
1. Пустые значения (Empty-значения)
1. Пустые значения (Empty-значения) Пустое значение – это просто одно из множества возможных значений какого-то вполне определенного типа данных.Перечислим наиболее «естественные», непосредственные пустые значения (т. е. пустые значения, которые мы могли бы выделить
2. Неопределенные значения ( Null-значения)
2. Неопределенные значения (Null-значения) Слово Null используется для обозначения неопределенных значений в базах данных.Чтобы лучше понять, какие значения понимаются под неопределенными, рассмотрим таблицу, являющуюся фрагментом базы данных: Итак, неопределенное
Написание фильтров BLOB
Написание фильтров BLOB Написание фильтров BLOB требует точно таких же усилий по управлению памятью и потоками, а также того же порядка действий, что и другие внешние функции, а именно:1. Напишите фильтры и скомпилируйте их в объектные коды.2. Создайте совместно используемую
Создание фильтров
Создание фильтров Для создания фильтров нам понадобится "универсальная" панель Properties. Только в этом случае нам понадобится переключиться на вкладку Filters этой панели (рис. 9.1). Также можно включить пункт-переключатель Filters подменю Properties меню Window. В левой части панели Properties
Использование фильтров
Использование фильтров Вы можете встретиться с задачей отбора записей в объемном списке данных, что занимает продолжительное время. Для этого проще всего использовать встроенные возможности фильтрации данных. Excel 2007 обладает простыми и удобными средствами установки
Использование фильтров
Использование фильтров С помощью фильтра можно отбирать для отображения в таблице только записи, которые отвечают определенным критериям. Для установки фильтров в Access 2007 существует несколько способов.Рассмотрим их.Фильтр по выделенному значению. Этот способ позволяет