Page 52 - 4657
P. 52
Кілька розділів catch
У деяких випадках той самий блок програмного коду може
збуджувати виключення різних типів. Для того, щоб обробляти
детальні ситуації, Java дозволяє використовувати будь-яку
кількість catch-розділів для try-блоку. Найбільш спеціалізовані
класи виключень повинні йти першими, оскільки жоден підклас
не буде досягнутий, якщо поставити його після суперкласу.
Наступна про-грама перехоплює два різних типи виключень,
причому за цими двома спеціалізованими оброблювачами
випливає розділ catch загального призначення, що перехоплює
всі підкласи класу Throwable.
class MultiCatch {
public static void main(String args[]) {
try {
int a = args.length;
System.out.println("a = " + a);
int b = 42 / a;
int c[] = { 1 };
c[42] = 99;
}
catch (ArithmeticException e) {
System.out.println("div by 0: " + e);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("array index oob: " + e);
}
} }
Цей приклад, запущений без параметрів, викликає
порушення виключення ситуації розподілу на нуль. Якщо ж ми
задамо в командному рядку один чи кілька параметрів, тим
самим установивши, а в значення більшості нуля, наш приклад
переживе оператор розподілу, але в наступному операторі буде
порушене виключення виходу індексу за границі масиву
ArrayIndexOutOf Bounds. Нижче приведені результати роботи
цієї програми, запущеної тим і іншом способом.
С:\> java MultiCatch
50