Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

try / catch / finally

Перехватывает исключения; finally выполняется всегда, а try с ресурсами сам их закрывает.

Доступно с: Java 1.0

Синтаксис

try { … } catch (Type e) { … } finally { … }

Примеры

Перехват исключения и блок finally:

void main() {
    try {
        int n = Integer.parseInt("12a");
        IO.println(n);
    } catch (NumberFormatException e) {
        IO.println("Bad number: " + e.getMessage());
    } finally {
        IO.println("done");
    }
}

Результат:

Bad number: For input string: "12a"
done

Несколько типов в одном catch:

void main() {
    String[] inputs = {"5", "x", null};
    for (String s : inputs) {
        try {
            IO.println(10 / Integer.parseInt(s.strip()));
        } catch (NumberFormatException | NullPointerException e) {
            IO.println(e.getClass().getSimpleName());
        }
    }
}

Результат:

2
NumberFormatException
NullPointerException

try с ресурсами закрывает объект в любом случае:

void main() {
    try (var scanner = new Scanner("first line\nsecond line")) {
        IO.println(scanner.nextLine());
    }
}

Результат:

first line

Примечания

Ветки catch проверяются сверху вниз, поэтому более конкретные типы ставят выше общих (Exception — последним). Пустой catch скрывает ошибки — хотя бы выводите сообщение.

В скобках после try можно объявить объекты, реализующие AutoCloseable (файлы, потоки, соединения): close() вызовется автоматически, даже при исключении.

См. также

  • throw — Бросает исключение и прерывает выполнение метода.
  • throws — Объявляет, какие проверяемые исключения может бросить метод.
  • try-with-resources — Блок `try`, который сам закрывает открытые ресурсы — файлы, соединения, потоки.
  • Exception — Базовый класс исключений, которые программа может перехватить и обработать.

Вопросы и ответы по теме

В учебнике

  • try, catch и finally — Обработка исключений в Java — блоки try и catch, несколько catch, multi-catch, finally и выбрасывание исключений через throw.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.