使用throw关键字时编译错误

时间:2016-06-01 19:32:58

标签: java exception throw

示例代码:1

public class ClassTest     {
    public static void main(String[] args)  {
        throw  new java.lang.ArithmeticException(); 
    }
}

----没有编译错误上面的代码,编译器不要求处理异常

示例代码:2

public class ClassTest     {
    public static void main(String[] args)  {
        throw new java.lang.Exception();    
    }
}

- 编译器希望使用try-catch或throws来处理异常。

任何人都可以解释编译器的这种行为。我认为这是因为我们需要特别提到XYZException类(除了Exception类)。

2 个答案:

答案 0 :(得分:4)

ArithmeticExceptionRuntimeException,编译器不会检查。如果违反了规则,则会检查Exception,因此会阻止编译,例如不处理抛出异常的方法。

答案 1 :(得分:0)

在示例代码1中,我们遇到的异常是算术异常,即运行时异常。正如我们已经知道的那样,Run time Exception隐式传播而不在方法签名处使用throws关键字,而不是在同一方法中处理它。

在示例代码2中,我们遇到的异常是Checked Exception,它应该通过使用try catch或使用throws关键字来处理。但是丢失了方法签名处的throws关键字,这导致编译时错误。