Часть заголовка метода throws
Листинг 16.4. Обработка исключения в методе.
class SimpleExtf{ 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 этот оператор показан как комментарий. Уберите символы комментария //, перекомпилируйте программу и посмотрите, как изменится ее вывод.
Рис. 16.3. Обработка исключения в методе