760e358a

Программа с блоками обработки исключений



Листинг 16.2. Программа с блоками обработки исключений

class SimpleExtlf

public static void main(String[] args){

try{

int n = Integer.parselnt(args[0]);


System.out.println("After parselnt());

System.out.println(" 10 / n = " + (10 / n) ) ;

Systfem. out. println ("After results output");
 

}catch(ArithmeticException ae){

System.out.println("From Arithm.Exc. catch: "+ae);
 

}catch(ArraylndexOutOfBoundsException arre){

System.out.println("From Array.Exc.catch: "+arre);
 

}finally{

System.out.println("From finally");
 

}

System.out.println("After all actions");
 

}

В программу листинга 16.1 вставлен блок try{} и два блока перехвата catchou для каждого типа исключений. Обработка исключения здесь заключается просто в выводе сообщения и содержимого объекта-исключения, как оно представлено методом tostring() соответствующего класса-исключения.

После блоков перехвата вставлен еще один, необязательный блок finaliy(). Он предназначен для выполнения действий, которые надо выполнить обязательно, чтобы ни случилось. Все, что написано в этом блоке, будет выполнено и при возникновении исключения, и при обычном ходе программы, и даже если выход из блока try{} осуществляется оператором return.

Если в операторе обработки исключений есть блок finally{}, то блок catch () {} может отсутствовать, т. е. можно не перехватывать исключение, но при его возникновении все-таки проделать какие-то обязательные действия.

Кроме блоков перехвата в листинге 16.2 после каждого действия делается трассировочная печать, чтобы можно было проследить за порядком выполнения программы. Программа запущена три раза: с аргументом 5, с аргументом 0 и вообще без аргумента. Результат показан на Рисунок 16.2.



Содержание раздела