Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Блок finally
Блок finally
В рамках try/catch можно также определить необязательный блок finally. Задача блока finally – обеспечить безусловное выполнение некоторого набора операторов программного кода, независимо от наличия или отсутствия исключения (любого типа). Для примера предположим, что вы хотите всегда выключать радио автомобиля перед выходом из Main(), независимо от исключений.
static void Main(string[] args) {
…
Car myCar = new Car ('"Zippy", 20);
myCar.CrankTunes(true);
try {
// Логика ускорения автомобиля.
} catch (CarIsDeadException e) {
// Обработка CarIsDeadException.
} catch (ArgumentOutOfRangeException e) {
// Обработка ArgumentOutOfRangeException.
} catch(Exception e) {
// Обработка всех остальных исключений.
} finally {
// Это выполняется всегда. Независимо от исключений.
myCar.CrankTunes(false);
}
}
Если вы не включите в конструкцию блок finally, то радио не будет выключаться, когда обнаруживается исключение (что может быть или не быть проблемой). В более реальном сценарии, когда приходится освобождать ресурсы объектов, закрывать файлы, отключаться от баз данных и т.д., блок finally может гарантировать соответствующую "уборку".
- Ода ошибкам и исключениям
- Роль обработки исключений в .NET
- Простейший пример
- Конфигурация состояния исключений
- Исключения системного уровня (System.SystemException)
- Исключения уровня приложения (System.ApplicationException)
- Обработка множеств исключений
- Блок finally
- Что и чем генерируется
- Исключения, оставшиеся без обработки
- Отладка необработанных исключений в Visual Studio 2005
- Резюме
- Выход из try-блока
- Сочетание блоков finally и except
- Блок else в блоке try-except в Python
- 11.6. Множественные блоки catch
- Блок операторов finally
- Использование блока finally
- Блок finally в Python
- Оператор lock
- Обработчики завершения
- Выполнение обработчика завершения и выход из него
- Обработчики завершения: завершение процессов и потоков