РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
691 of 1163 menu

Блок finally

Блок finally используется в конструкции try-catch-finally и позволяет выполнить код, который должен быть выполнен в любом случае: произошло исключение или нет, было ли оно перехвачено или нет. Блок finally не принимает параметров и не возвращает значений. Он выполняется даже в том случае, если в блоке try или catch произошел выход из метода с помощью return. Единственный случай, когда блок finally может не выполниться - это принудительное завершение работы виртуальной машины Java.

Синтаксис

try { // код, который может вызвать исключение } catch (Exception e) { // обработка исключения } finally { // код, который выполнится всегда }

Пример

Давайте рассмотрим базовый пример, где исключение не возникает, но блок finally все равно выполняется:

public class Main { public static void main(String[] args) { try { int res = 10 / 2; System.out.println("Result: " + res); } catch (ArithmeticException e) { System.out.println("Error: " + e.getMessage()); } finally { System.out.println("Finally block executed"); } } }

Результат выполнения кода:

"Result: 5" "Finally block executed"

Пример

Теперь рассмотрим случай, когда возникает исключение и оно перехватывается:

public class Main { public static void main(String[] args) { try { int res = 10 / 0; System.out.println("Result: " + res); } catch (ArithmeticException e) { System.out.println("Caught: " + e.getMessage()); } finally { System.out.println("Finally block executed"); } } }

Результат выполнения кода:

"Caught: / by zero" "Finally block executed"

Пример

Особый интерес представляет ситуация, когда в блоке try выполняется return. Блок finally все равно будет выполнен перед возвратом значения:

public class Main { public static int test() { try { return 1; } finally { System.out.println("Finally works"); } } public static void main(String[] args) { int res = test(); System.out.println("Result: " + res); } }

Результат выполнения кода:

"Finally works" "Result: 1"

Смотрите также

  • оператор try,
    который определяет блок кода для проверки исключений
  • оператор catch,
    который перехватывает и обрабатывает исключения
  • оператор throw,
    который генерирует исключение
  • конструкция try-with-resources,
    которая автоматически управляет ресурсами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить