Почему Double.parseDouble (null) и Integer.parseInt (null) выдают разные исключения?
Это историческая случайность или умышленное? В документации четко указаны два типа исключений для Double.parseDouble(...)
и один для Integer.parseInt()
, но это кажется непоследовательным:
Integer.parseInt(null); // throws java.lang.NumberFormatException: null
Однако
Double.parseDouble(null); // throws java.lang.NullPointerException
double
примитивные docs.oracle.com/javase/tutorial/java/nutsandbolts/…parseDouble
не выполняет нулевую проверку, а просто выдает NPE при обнаружении, но вparseInt
, затем проверяется входная строкаnull
. Я не вижу веской причины, по которой они должны вести себя иначе.Ответы:
А также:
Как взято из: Отчет об ошибке: Integer.parseInt () и Double.parseDouble () генерируют разные исключения для null.
Как утверждали другие: вероятно, это сделано разными авторами.
источник
Примечание: все в этом сообщении находится в исходном коде Java7-b147
Double.parseDouble()
входит в библиотеку Sun (вsun.misc.FloatingDecimal
) первое важное, что происходит:in = in.trim(); // don't fool around with white space. // throws NullPointerException if null
Integer.parseInt()
делается вручную вInteger
классе. Первое, что происходит, это:if (s == null) { throw new NumberFormatException("null"); }
Думаю, есть два разных автора.
источник