Книга: Системное программирование в среде Windows
Обработчики завершения
Обработчики завершения служат в основном тем же целям, что и обработчики исключений, но выполняются, когда поток покидает блок в результате нормального выполнения программы, а также когда возникает исключение. С другой стороны, обработчик завершения не может распознавать исключения.
Обработчик завершения строится с использования ключевого слова __finally в операторе try…finally. Структура этого оператора аналогична структуре оператора try…finally, но в ней отсутствует выражение фильтра. Как и обработчики исключений, обработчики завершения предоставляют удобные возможности для закрытия дескрипторов, освобождения ресурсов, восстановления масок и выполнения иных действий, направленных на восстановление известного состояния системы после выхода из блока. Например, программа может выполнять операторы return внутри блока, оставляя всю работу по "уборке мусора" обработчику завершения. Благодаря этому отпадает необходимость во включении кода очистки в код самого блока или переходе к коду очистки при помощи оператора goto.
__try {
/* Блок кода. */
} _finally {
/* Обработчик завершения (блок finally). */
}
- Обработчики управляющих сигналов консоли
- Выполнение обработчика завершения и выход из него
- Обработчики завершения: завершение процессов и потоков
- Пример: использование обработчиков завершения для повышения качества программ
- Исключения и обработчики исключений
- Речевые модули для завершения продажи
- Используйте «инстинкт завершения»
- Обработчики прерываний
- 9.1.5.1. Определение статуса завершения процесса
- 9.1.5.3. Функции завершения
- 9.1.6. Использование статуса завершения порожденного процесса
- 10.4. Обработчики сигналов в действии