Dlaczego Double.parseDouble (null) i Integer.parseInt (null) zgłaszają różne wyjątki?
Czy to przypadek historyczny czy celowy? Dokumentacja jasno określa dwa rodzaje wyjątków dla Double.parseDouble(...)
i jeden dla Integer.parseInt()
, ale wydaje się niespójna:
Integer.parseInt(null); // throws java.lang.NumberFormatException: null
jednak
Double.parseDouble(null); // throws java.lang.NullPointerException
double
prymitywny docs.oracle.com/javase/tutorial/java/nutsandbolts/ ...parseDouble
nie sprawdza wartości null i po prostu zgłasza NPE, gdy zostanie napotkany, ale wparseInt
, a następnie sprawdzany jest ciąg wejściowynull
. Nie widzę żadnego powodu, dla którego mieliby zachowywać się inaczej.Odpowiedzi:
I:
Jak wzięto z: Bug Report: Integer.parseInt () i Double.parseDouble () rzucają różne wyjątki na null.
Jak stwierdzili inni: Prawdopodobnie został wykonany przez różnych autorów.
źródło
Uwaga: wszystko w tym poście jest w źródle Java7-b147
Double.parseDouble()
trafia do biblioteki Sun (wsun.misc.FloatingDecimal
) pierwszą ważną rzeczą, która się dzieje, jest:in = in.trim(); // don't fool around with white space. // throws NullPointerException if null
Integer.parseInt()
odbywa się ręcznie wInteger
klasie. Pierwsza ważna rzecz to:if (s == null) { throw new NumberFormatException("null"); }
Myślę, że jest dwóch różnych autorów.
źródło