Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Декілька Блоків Catch | Розділ
Обробка Виключень у Java

bookДекілька Блоків 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

Main.java

copy
12345678910111213141516
package 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, забезпечуючи коректну обробку винятку.

question mark

Чому порядок блоків catch має значення під час обробки винятків у Java?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 5
some-alt