Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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 может гарантировать соответствующую "уборку".

Оглавление книги


Генерация: 0.653. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз