class SimpleExt3{
private static void f(int n){ // throws ArithmeticException{
try{
System.out.println(" 10 / n = " + (10 / n) ) ;
System.out.printlnt"From f() after results output");
}catch(ArithmeticException ae)(
System.out.printlnf"From f() catch: " + ae) ;
// throw ae;
}finally{
System.out.println("From f() finally");
}
}
public static void main(String[] args){
try{
inf n = Integer.parselnt(args[0]);
System.out.printlnt"After parselnt());
f (n);
System.out.println("After results output");
(
catch(ArithmeticException ae){
System.out.println("From Arithm.Exc. catch: "+ае);
}catch(ArraylndexOutOfBoundsException arre)(
System.out.println("From Array.Exc. catch: "+arre);
}finally{
System.out.println("From finally");
}
System.out.println("After all actions");
}
}
Внимательно проследите за передачей управления и заметьте, что исключение класса ArithmeticException уже не выбрасывается в метод main ().
Оператор try {}catch о {} в методе f о можно рассматривать как вложенный в оператор обработки исключений в методе main ().
При необходимости исключение можно выбросить оператором throw ae. В листинге 16.4 этот оператор показан как комментарий. Уберите символы комментария //, перекомпилируйте программу и посмотрите, как изменится ее вывод.