92 votes

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

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

S'agit-il d'un accident historique ou d'un acte intentionnel ? La documentation indique clairement deux types d'exceptions pour Double.parseDouble(...) et un pour Integer.parseInt() mais cela semble incohérent :

Integer.parseInt(null); // throws java.lang.NumberFormatException: null

Cependant

Double.parseDouble(null); // throws java.lang.NullPointerException

67voto

Floris Velleman Points 2980

Il est raisonnable de s'attendre à ce que les mêmes exceptions soient levées pour null ; cependant, ces API sont très anciennes et ne peuvent pas être modifiées à ce stade.

Et :

Étant donné que le comportement des exceptions existe depuis longtemps et qu'il est spécifié dans la JavaDoc, il n'est pas possible de modifier le comportement de l'une ou l'autre méthode pour le moment. Fermer comme ne réparera pas.

Tel que pris dans : Rapport de bug : Integer.parseInt() et Double.parseDouble() lèvent des exceptions différentes sur null.

Comme d'autres l'ont dit : C'est probablement fait par différents auteurs.

59voto

durron597 Points 9165

Note : tout dans ce post est dans la source de Java7-b147

Double.parseDouble() va dans une bibliothèque Sun (dans sun.misc.FloatingDecimal ) la première chose importante qui se produit est :

in = in.trim(); // don't fool around with white space.
                // throws NullPointerException if null

Integer.parseInt() se fait manuellement dans le Integer la classe. La première chose importante qui se passe est :

if (s == null) {
    throw new NumberFormatException("null");
}

Je pense qu'il y a deux auteurs différents.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X