我创建了一个抛出异常()的方法。它会导致错误 - 未处理的异常类型异常
public void temp(){
throw new Exception();
}
但是,如果我用任何其他异常(如NullPointerException)替换Exception,我不会收到任何错误。为什么会这样?
答案 0 :(得分:7)
这是“已检查”异常与“未经检查”异常之间的区别。任何扩展RuntimeException的东西,包括NullPointerException,都是“未选中”的,这意味着它们不需要通过try / catch显式处理,也不需要声明方法抛出它们。
检查异常是那些不扩展RuntimeException并且必须通过try / catch或声明方法抛出它来处理的异常。所以你的代码无法编译,因为你没有处理它。
答案 1 :(得分:1)
我遇到了这个错误的奇怪情况。也就是说,我的Eclipse在没有警告的情况下构建了代码,但是我的两位同事编译器都给出了这个错误。我们花了一段时间才弄明白,主要是因为使用RuntimeException
有一个简单的补救措施。但最后,诀窍在于他们的Eclipse是为Java 1.6设置的,而我的Eclipse则调整为1.7。