Java抛出关键字不起作用

时间:2018-01-22 13:07:50

标签: java exception-handling

我在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!");
        }
    }
}      

2 个答案:

答案 0 :(得分:1)

这与预期完全一致。 System.out.println(a / 0);抛出一个ArithmeticException,因为你不能除以0.然后在第二个catch块的main方法中捕获它,然后程序终止。在处理异常后,执行正常继续。

Java Language Specification11.3说:

  

当抛出异常(§14.18)时,控制权从导致异常的代码转移到catch语句中最近的动态封闭try子句(如果有)( §14.20)可以处理异常。

答案 1 :(得分:0)

您的代码在首次Xyz.test();投放后,仍然无法恢复正常工作(在您的代码中调用Exception),因此无法继续执行其余{ {1}}方法。