2

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

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

但是,如果我用任何其他异常(例如 NullPointerException)替换异常,我不会收到任何错误。为什么会这样?

4

2 回答 2

7

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

已检查异常是那些不扩展 RuntimeException 并且必须通过 try/catch 或通过声明您的方法 throw 它来处理的异常。因此,您的代码无法编译,因为您没有以任何一种方式处理它。

于 2013-03-17T04:25:52.700 回答
1

我遇到了这个错误的奇怪情况。也就是说,我的 Eclipse 在没有警告的情况下构建了代码,但是对于我的两个同事,编译器给出了这个错误。我们花了一段时间才弄清楚,主要是因为使用RuntimeException. 但最后,诀窍在于他们的 Eclipse 是为 Java 1.6 设置的,而我的则为 1.7 进行了调整。

于 2015-02-20T20:45:21.123 回答