Pourquoi Double.parseDouble (null) et Integer.parseInt (null) émettent-ils des exceptions différentes?
Est-ce un accident historique ou intentionnel? La documentation indique clairement deux types d’exceptions pour Double.parseDouble(...)
et une pour Integer.parseInt()
, mais cela semble incohérent:
Integer.parseInt(null); // throws java.lang.NumberFormatException: null
toutefois
Double.parseDouble(null); // throws java.lang.NullPointerException
Il est raisonnable de s’attendre à ce que les mêmes exceptions soient émises pour null; Cependant, ces API sont très anciennes et peuvent ne pas pouvoir être modifiées à ce stade.
Et:
Étant donné que le comportement des exceptions est ancien et spécifié dans JavaDoc, il est impossible de modifier le comportement de l’une ou l’autre méthode à ce stade. Fermeture comme ne corrigera pas.
Comme tiré de: Rapport de bogue: Integer.parseInt () et Double.parseDouble () lancent différentes exceptions sur null.
Comme d’autres l’ont déclaré: c’est probablement le fait de différents auteurs.
Note: tout dans cet article est dans la source de Java7-b147
Double.parseDouble()
entre dans une bibliothèque Sun (dans sun.misc.FloatingDecimal
), la première chose importante à faire est:
in = in.sortingm(); // don't fool around with white space. // throws NullPointerException if null
Integer.parseInt()
est fait manuellement dans la classe Integer
. La première chose importante qui se produit est:
if (s == null) { throw new NumberFormatException("null"); }
Je suppose qu’il y a deux auteurs différents.