我正在使用Netbeans 8 IDE
而我刚刚遇到这种奇怪的情况。我们假设我在throws
和Exception
的课程中使用了一种方法,当我调用该方法时Netbeans
不会强制执行try catch
。有时可能会发生Exception
而且它不会被捕获。
为什么Netbeans不执行try catch
方法?
以下是一个例子:
public class MyMethodClass {
public MyMethodClass() {}
public void someMethod() throws NullPointerException {
// do something
if(something == null) {
throw new NullPointerException();
}
// do something else
}
}
public class MyClass {
public MyClass() {
MyMethodClass mmc = new MyMethodClass();
// Here Netbeans does not force me to use a try catch, why?
mmc.someMethod();
}
}
答案 0 :(得分:3)
NullPointerException
是一个未经检查的异常(因为它是RuntimeException
的子类)。您不必捕获要编译的代码的未经检查的异常。
RuntimeException及其子类是未经检查的异常。未经检查的异常不需要在方法或构造函数的throws子句中声明,如果它们可以通过执行方法或构造函数抛出并在方法或构造函数边界外传播
答案 1 :(得分:2)
因为NullPointerException
是未经检查的例外。
答案 2 :(得分:2)
NullPointerException
是一个未经检查的异常,这意味着您并不总是需要捕获它。未经检查的例外是那些扩展RuntimeException
或Error
的例外情况。这些的主要目的是通常没有恢复的情况;声明未经检查的异常也不需要方法。这完全有效:
public void throwNPE() {
throw new NullPointerException();
}
Here是Oracle关于已检查与未检查异常的陈述之一。