我在Exception Handling Java中遇到throws关键字的问题。这是代码。我希望代码能够打印"Improper Input to parse method!"
和"Divide by 0 error!"
。但我只得"Divide by 0 error!"
。
class D {
void add() throws ArithmeticException,NumberFormatException {
int a = 9;
System.out.println(a / 0);
Xyz.test();
}
}
class Xyz {
public static void test() throws NumberFormatException {
int a = Integer.parseInt("bc");
}
}
class Abc {
public static void main(String args[]) {
try{
D d = new D();
d.add();
}
catch(NumberFormatException ex) {
System.out.println("Improper Input to parse method!");
}
catch(ArithmeticException ex) {
System.out.println("Divide by 0 Error!");
}
}
}
答案 0 :(得分:1)
这与预期完全一致。 System.out.println(a / 0);
抛出一个ArithmeticException
,因为你不能除以0.然后在第二个catch块的main
方法中捕获它,然后程序终止。在处理异常后,执行不正常继续。
Java Language Specification章11.3说:
当抛出异常(§14.18)时,控制权从导致异常的代码转移到
catch
语句中最近的动态封闭try
子句(如果有)( §14.20)可以处理异常。
答案 1 :(得分:0)
您的代码在首次Xyz.test();
投放后,仍然无法恢复正常工作(在您的代码中调用Exception
),因此无法继续执行其余{ {1}}方法。