Книга: Основы программирования на Java

9.5. Несколько разделов catch

9.5. Несколько разделов 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("деление на ноль: " + e);
}
catch(ArrayIndexOutOfBoundsException e) {
           System.out.println("неправильный индекс массива: " + e);
}
}

Этот пример, запущенный без параметров, вызывает возбуждение исключительной ситуации деления на ноль. Если же мы зададим в командной строке один или несколько параметров, тем самым установив переменную «а» в значение больше нуля, наш пример выполнит оператор деления, но в следующем операторе будет возбуждено исключение выхода индекса за границы массива ArraylndexOutOfBounds. Ниже приведены результаты работы этой программы, запущенной и тем и другим способом.

C:> java MultiCatch
a = 0
div by 0: java.lang. ArithmeticException: / деление на ноль
C:> java MultiCatch 1
a= 1
неправильный индекс массива: java.lang.ArrayIndexOutOffloundsException: 42

Оглавление книги


Генерация: 0.280. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз