这是对我来说没有意义的东西。Java抛出错误和捕获NullPointerException
第一个例子:
实施例1(GOOD):
public static void main(String args[]){
try {
Exception e = null;
throw e;
} catch (Exception e) {
}
一切都很好与部份代码 - 抛出异常,并且捕获。
实施例2(BAD):
public static void main(String args[]){
try {
Exception e = null;
throw e;
} catch (NullPointerException e) {
}
}
这不会编译,因为catch块不能赶上NullPointerException
这是Exception
子类。它不知道会抛出什么样的异常。
java.lang.Object
java.lang.Throwable
java.lang.Exception --> Thrown
java.lang.RuntimeException
java.lang.NullPointerException --> Cannot catch like this
因此,让我们改变例外NullPointerException
:
例3(GOOD)
public static void main(String args[]) {
try {
NullPointerException e = null;
throw e;
} catch (NullPointerException e) {
}
简单而合乎逻辑的,但在这里谈到的东西很奇怪:
例4(GOOD) - 不知道为什么?:
public static void main(String args[]) {
try {
Error e = null;
throw e;
} catch (NullPointerException e) {
}
如果我扔Error
,我怎么能抓到NullPointerException
?这个不成立。
有:
的Throwable:错误,异常
两个Error
和Exception
是Throwable
子类,但NullPoinTerException
无关,与Error
,这是一个Exception
,不Error
。
这些例子都不是很好。你从哪里弄到的? – duffymo 2014-10-27 09:26:28
你确定'catch(NullPointerException e)'*捕获了'错误'吗? – 2014-10-27 09:26:50
是的,这是我的问题的整个观点:) – RichardK 2014-10-27 09:27:48