這是對我來說沒有意義的東西。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