运行时:
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
, 将永远是错误的。这根本不是真的。