При запуске:
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
Это было довольно ошеломляющим для меня. Я бы подумал, что это приведет к ошибке времени компиляции.
Почему я могу обнулить значение null в Java и почему он преобразует его в исключение NullPointerException?
(На самом деле, я не знаю, является ли это "upcast", учитывая, что я бросаю нуль)
Помимо действительно действительно глупых вопросов интервью (пожалуйста, никто не спрашивает об этом в интервью), я не вижу причин для throw null
. Может быть, вы хотите уволить, но это... Я имею в виду, почему еще кто-нибудь throw null
?
Фантастический факт IntelliJ IDEA 12 говорит мне, что моя строка e instanceof NullPointerException
всегда будет ложной. Это совсем не так.