これを実行するとき:
public class WhatTheShoot {
public static void main(String args[]){
try {
throw null;
} catch (Exception e){
System.out.println(e instanceof NullPointerException);
System.out.println(e instanceof FileNotFoundException);
}
}
}
応答は次のとおりです。
true
false
これは私にとってかなり衝撃的でした。これはコンパイル時のエラーになると思っていたでしょう。
Java で null をスローできるのはなぜですか? また、それを NullPointerException にアップキャストするのはなぜですか?
(実際には、nullを投げているので、それが「アップキャスト」であるかどうかはわかりません)
本当にばかげたインタビューの質問(インタビューで誰もこれを尋ねないでください)を除けば、throw null
. たぶん、あなたはクビになりたいと思っているかもしれませんが、それは...つまり、なぜ他の誰かがクビになるのthrow null
ですか?
楽しい事実 IntelliJ IDEA 12 は、私の行e instanceof NullPointerException
が常に false になることを教えてくれます。これはまったく真実ではありません。