Java 是否在方法签名中声明NullPointerException?
Nullpointerexception被视为运行时异常,所有运行时异常都不需要在引发它的方法签名中声明。但是,NullPointerException给了我一个编译错误,说-UnhandledException!为什么会这样Java 是否在方法签名中声明NullPointerException?,java,nullpointerexception,Java,Nullpointerexception,Nullpointerexception被视为运行时异常,所有运行时异常都不需要在引发它的方法签名中声明。但是,NullPointerException给了我一个编译错误,说-UnhandledException!为什么会这样 1...void doMore(){ 2... throw new NullPointerException(); 3...} 第2行显示编译错误,但如果引发任何其他运行时异常(如NullArgumentException),则不会出现编译错误。NullPoint
1...void doMore(){
2... throw new NullPointerException();
3...}
第2行显示编译错误,但如果引发任何其他运行时异常(如NullArgumentException),则不会出现编译错误。NullPointerException真的是未经检查的异常吗?否,因为NullPointerException扩展了 方法不需要在其throws子句中声明在方法执行期间可能抛出但未捕获的RuntimeException的任何子类
您可以在任何地方的代码中使用
NullPointerException
,就像任何其他异常一样。但是,作为未检查的异常,您不必在函数体中声明它,也不需要处理它。因此,如果您得到一个编译器错误,那不是因为NullPointerException
,而是因为代码中的一些其他问题,您没有发布这些问题
这样的方法编译得非常好,没有任何错误:
void doSomething() {
throw new NullPointerException();
}
您可以,但不必这样做,因为NPE是一个未选中的异常 我认为“doMore()”方法只是为了证明NullPointerException是否是未经检查的异常。我不知道为什么会有人需要一个抛出它们的方法
事实上,这是不受约束的。事实上,如果我使用Eclipse将您的代码粘贴到一个新类中,就不会出现编译器错误。因此,我认为这与IDE配置对空相对代码验证的严格要求有关,或者与代码段中未出现的其他错误有关。是的,您可以将NullPointerException用作代码中的任何其他异常,但它没有用,因为您不需要处理代码中的所有运行时异常(未选中) 这里您不会因为声明NullPointerException而得到错误,但可能是其他编译错误 在此,您可以参考此示例:
public static void main(String args[]) {
String str = null;
System.out.println(str.length());
throw new NullPointerException();
}
为什么首先要从代码中抛出一个
NullPointerException
?检查文档中的NullPointerException是否真的是未检查的异常?
NPE是未检查的,因此更有可能是另一个无法处理的异常。您遇到了哪一个错误,代码的其余部分看起来如何?抛出异常时,确保它有足够的信息-在本例中,IllegalArgumentException和引起null的原因说明可能更有用这只是一个示例类,只有此方法,没有其他内容。我刚刚用NullArgumentException替换了NullPointerException,它工作得很好,但对NullPointerException不起作用。Eclipse会阻止我在不添加抛出的情况下使用它吗?不会。正如我所说,上面的方法工作得很好,我在Eclipse中测试了它。您的问题在其他地方,但您应该显示完整的错误消息和代码,以判断出了什么问题。IDE配置部分就是问题所在!我试着在一个单独的项目中运行它,效果很好。