2013-03-17 54 views
2

我做了一个抛出异常()的方法。它会导致一个错误 - 未处理的异常类型异常错误 - 未处理的异常类型异常?

public void temp(){ 
    throw new Exception(); 
} 

但是,如果我有任何其他异常,如NullPointerException异常更换例外,我没有得到任何错误。这是为什么发生?

+1

http://docs.oracle.com/javase/tutorial/essential/exceptions/ – 2013-03-17 04:24:36

+0

请告诉我你为什么投下了我: - | – Korg 2013-03-17 04:25:14

+1

我的猜测是downvoter认为,检查与未经检查的异常是基本的Java编码。你应该能够搜索答案。 – 2013-03-17 04:34:29

回答

6

这就是“checked”异常和“unchecked”异常之间的区别。任何延长RuntimeException的事情,包括NullPointerException,都是“未经检查的”,这意味着它们不需要通过try/catch或声明该方法抛出它们来显式处理。

检查的异常是那些不扩展RuntimeException的,并且必须可以通过try/catch或通过声明您的方法抛出它来处理。所以你的代码无法编译,因为你没有处理它。

+0

谢谢。链接到类层次结构图 - http://docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html – Korg 2013-03-17 04:27:51

1

我陷入了这个错误的一个奇怪的情况。也就是说,我的Eclipse构建了没有警告的代码,但是对于我的两位同事,编译器给出了这个错误。我们花了一段时间才弄清楚,主要是因为使用RuntimeException有一个简单的补救措施。但最后,诀窍是他们的Eclipse被设置为Java 1.6,而我的调整为1.7。

相关问题