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

Множественный catch

Множественный catch (multi-catch) - это механизм, позволяющий в одном блоке catch обрабатывать сразу несколько типов исключений. Вместо того чтобы писать отдельный блок catch для каждого типа, мы указываем их через вертикальную черту |. Переменная, в которую попадает исключение, при этом является неявно финальной (final), то есть её нельзя переприсвоить внутри блока. Это удобно, когда разные исключения требуют одинаковой обработки.

Синтаксис

try { // код, который может выбросить исключение } catch (ExceptionType1 | ExceptionType2 | ExceptionType3 e) { // общая обработка для всех указанных типов }

Пример

Давайте перехватим два разных исключения в одном блоке catch - деление на ноль и выход за границы массива:

public class Main { public static void main(String[] args) { try { int[] arr = {1, 2, 3}; int res = arr[5] / 0; } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println("Caught: " + e.getClass().getSimpleName()); } } }

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

"Caught: ArrayIndexOutOfBoundsException"

Пример

Давайте перехватим несколько unchecked-исключений и выведем их сообщения:

public class Main { public static void main(String[] args) { try { String str = "12345"; int num = Integer.parseInt("abcde"); } catch (NumberFormatException | NullPointerException | IllegalStateException e) { System.out.println(e.getMessage()); } } }

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

"For input string: \"abcde\""

Пример

Давайте покажем, что переменная в multi-catch является неявно финальной - попытка её переприсвоить вызовет ошибку компиляции:

public class Main { public static void main(String[] args) { try { int res = 1 / 0; } catch (ArithmeticException | RuntimeException e) { // e = new RuntimeException(); // ошибка компиляции System.out.println("Handled"); } } }

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

"Handled"

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

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