Обработчики завершения

Обработчики завершения

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

Обработчик завершения строится с использования ключевого слова __finally в операторе try…finally. Структура этого оператора аналогична структуре оператора try…finally, но в ней отсутствует выражение фильтра. Как и обработчики исключений, обработчики завершения предоставляют удобные возможности для закрытия дескрипторов, освобождения ресурсов, восстановления масок и выполнения иных действий, направленных на восстановление известного состояния системы после выхода из блока. Например, программа может выполнять операторы return внутри блока, оставляя всю работу по "уборке мусора" обработчику завершения. Благодаря этому отпадает необходимость во включении кода очистки в код самого блока или переходе к коду очистки при помощи оператора goto.

__try {

 /* Блок кода. */

} _finally {

 /* Обработчик завершения (блок finally). */

}

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

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

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

Добавляем обработчики событий

Из книги Разгони свой сайт автора Мациевский Николай

Добавляем обработчики событий Главная техника, которую мы используем, чтобы сохранить наш JavaScript «ненавязчивым», — это хранение скрипта в отдельном файле, что предпочтительней, чем смешивать его с разметкой страницы. Чтобы исполнить функции в нашем .js-файле, нам надо


1.1.9. Обработчики событий

Из книги Интернет решения от доктора Боба автора Сворт Боб

1.1.9. Обработчики событий Обработчики события методы объекта. Это означает, что они должны быть методами класса, а не обычной процедурой или функцией (первый параметр должен быть Self). Для наиболее употребимых обработчиков предназначен следующий тип:TNotifyEvent = procedure(sender: TObject)


Обработчики прерываний

Из книги Энциклопедия разработчика модулей ядра Linux автора Померанц Ори

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


Исключения и обработчики исключений

Из книги Системное программирование в среде Windows автора Харт Джонсон М

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


Обработчики завершения: завершение процессов и потоков

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Обработчики завершения: завершение процессов и потоков Обработчики завершения не выполняются, если выполнение процесса или потока было прекращено независимо от того, было ли это инициировано самим процессом путем использования функций ExitProcess или ExitThread, или вызвано


Обработчики управляющих сигналов консоли

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

Обработчики управляющих сигналов консоли Обработчики исключений могут реагировать на самые разнообразные события, но они не в состоянии обнаруживать такие ситуации, как выход пользователя из системы или нажатие комбинации клавиш <Ctrl+C> на клавиатуре с целью


22.3.6. Режимы состязаний и обработчики сигналов

Из книги Linux программирование в примерах автора Роббинс Арнольд

22.3.6. Режимы состязаний и обработчики сигналов Всякий раз когда взломщик может заставить программу вести себя неправильно, появляется потенциальная возможность для злоумышленной эксплуатации. Ошибки, кажущиеся безобидными, вроде двукратного освобождения одной и той же


Функции-обработчики

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Функции-обработчики Не все вызовы обработчиков соответствуют клиентским сообщениям. Некоторые из них синтезируются ядром, а некоторые — библиотекой.Я организовал этот раздел следующим образом:• общие замечания;• замечания о функциях установления


Обработчики прерываний

Из книги Разработка ядра Linux автора Лав Роберт

Обработчики прерываний Обработчики прерываний в QNX4 могли либо возвратить идентификатор прокси (указывая этим, что надо переключить прокси и таким образом уведомить ее владельца о прерывании), либо возвратить нуль (что означало бы, что в дальнейшем ничего делать не


10.4. Обработчики сигналов в действии

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

10.4. Обработчики сигналов в действии Множество осложнений и отклонений обнаруживается после установки на место обработчика, после его вызова и впоследствии


4.3.1. Обработчики очистки

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

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


Обработчики прерываний

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

Обработчики прерываний Функция, которую выполняет ядро в ответ на определенное прерывание, называется обработчиком прерывания (interrupt handler) или подпрограммой обслуживания прерывания (interrupt service routine). Каждому устройству, которое генерирует прерывания, соответствует свой


Совместно используемые обработчики

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

Совместно используемые обработчики Совместно используемые (shared) обработчики выполняются практически так же, как и не совместно используемые. Существует, однако, три главных отличия.• Флаг SA_SHIRQ должен быть установлен в параметре flags при вызове функции


Какие обработчики нижних половин необходимо использовать

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

Какие обработчики нижних половин необходимо использовать Решение о том, какой из механизмов обработки нижних половин следует использовать, является важным. В современных ядрах серии 2.6 есть три варианта выбора: отложенные прерывания (softirq), тасклеты (tasklet) и очереди


Спин-блокировки и обработчики нижних половин

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

Спин-блокировки и обработчики нижних половин Как было указано в главе 7, "Обработка нижних половин и отложенные действия", при использовании блокировок в работе с обработчиками нижних половин необходимо принимать некоторые меры предосторожности. Функция spin_lock_bh()