Декілька Блоків Catch
Свайпніть щоб показати меню
Під час роботи з винятками в Java часто виникає необхідність обробляти різні типи помилок, які можуть з'явитися у вашому коді. Кілька блоків catch дозволяють реагувати на різні типи винятків окремо в межах однієї структури try-catch. Розміщуючи декілька блоків catch після блоку try, можна визначити унікальну логіку обробки для кожного класу винятків. Такий підхід підвищує надійність коду, оскільки дає змогу по-різному вирішувати конкретні проблеми, такі як помилки введення, арифметичні помилки або звернення до null, залежно від ситуації.
try {
// code
} catch (Exception1) {
// exception handling 1
} catch (Exception2) {
// exception handling 2
}
Порядок блоків catch має вирішальне значення, оскільки Java перевіряє кожен блок catch послідовно, зверху вниз, щоб знайти відповідний тип винятку.
Оскільки винятки організовані у вигляді ієрархії, блок catch для суперкласу винятків (наприклад, Exception) завжди повинен розташовуватися після блоків catch для його підкласів (таких як NullPointerException або ArithmeticException).
Якщо блок catch для суперкласу розміщено перед його підкласами, компілятор згенерує помилку, оскільки блоки catch для підкласів стануть недосяжними. Розуміння цієї ієрархії забезпечує максимально точну обробку винятків у програмі.
Main.java
12345678910111213141516package com.example; public class Main { public static void main(String[] args) { try { int[] numbers = {1, 2, 3}; System.out.println("Result: " + (10 / numbers[3])); } catch (ArithmeticException e) { System.out.println("ArithmeticException caught: " + e.getMessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException caught: " + e.getMessage()); } catch (Exception e) { System.out.println("General Exception caught: " + e.getMessage()); } } }
У наведеній вище програмі блок try намагається поділити 10 на значення за індексом 3 у масиві numbers. Однак масив містить лише три елементи (індекси 0, 1 і 2), тому звернення до numbers[3] призведе до виникнення винятку ArrayIndexOutOfBoundsException.
Коли виникає виняток, Java перевіряє кожен блок catch по черзі. Спочатку шукається ArithmeticException, потім ArrayIndexOutOfBoundsException, і нарешті загальний Exception. Оскільки виниклий виняток відповідає ArrayIndexOutOfBoundsException, виконується лише цей блок catch, а інші пропускаються. Це демонструє, як Java обирає найбільш специфічний відповідний блок catch, забезпечуючи коректну обробку винятку.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат