Pourquoi Double.parseDouble (null) et Integer.parseInt (null) émettent-ils des exceptions différentes?

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.