示例代码: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类)。
答案 0 :(得分:4)
ArithmeticException
是RuntimeException
,编译器不会检查。如果违反了规则,则会检查Exception
,因此会阻止编译,例如不处理抛出异常的方法。
答案 1 :(得分:0)
在示例代码1中,我们遇到的异常是算术异常,即运行时异常。正如我们已经知道的那样,Run time Exception隐式传播而不在方法签名处使用throws关键字,而不是在同一方法中处理它。
在示例代码2中,我们遇到的异常是Checked Exception,它应该通过使用try catch或使用throws关键字来处理。但是丢失了方法签名处的throws关键字,这导致编译时错误。