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
   47   48   49   50   51   52   53   54   55   56   57