Книга: Основы программирования на Java
9.9. Оператор finally
9.9. Оператор finally
Иногда требуется гарантировать, что определенный участок кода будет выполняться независимо от того, какие исключения были возбуждены и перехвачены. Для создания такого участка кода используется оператор finally. Даже в тех случаях, когда в методе нет соответствующего возбужденному исключению раздела catch, блок finally будет выполнен до того, как управление перейдет к операторам, следующим за разделом try. У каждого раздела try должен быть, по крайней мере, или один раздел catch, или блок finally. Блок finally очень удобен для закрытия файлов и освобождения любых других ресурсов, захваченных для временного использования в начале выполнения метода. Ниже приведен пример класса с двумя методами, завершение которых происходит по разным причинам, но в обоих перед выходом выполняется код раздела finally.
class FinallyDemo {
static void procA() {
try {
System.out.println("insideprocA");
throw new RuntimeException("demo");
}
finally {
System.out.println("procA's finally");
}
}
static void procB() {
try {
System.out.println("insideprocB");
return;
}
finally {
System.out.println("procB's finally");
}
}
public static void main(String args[]) {
try {
procA();
}
catch (Exception e) {}
procB();
}
}
В этом примере в методе procA из-за возбуждения исключения происходит преждевременный выход из блока try, но при выходе выполняется раздел finally. Другой метод ргосВ завершает работу выполнением стоящего в try- блоке оператора return, но и при этом перед выходом из метода выполняется программный код блока finally. Ниже приведен результат, полученный при выполнении этой программы.
С:> java FinallyDemo
inside procA procA's finally
inside procB procB's finally
- Оператор lock
- Оператор try ... except
- Операторы
- Операторы: обзор
- Блок операторов finally
- Использование блока finally
- Оператор try ... finally
- Арифметические операторы
- 1.2.4. Операторы и приоритеты
- Условные операторы
- 1. Оператор Select – базовый оператор языка структурированных запросов
- Поразрядные операторы