Pourquoi Double.parseDouble (null) et Integer.parseInt (null) lisent différentes exceptions?
Est-ce un accident historique ou 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
Toutefois
Double.parseDouble(null); // throws Java.lang.NullPointerException
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 pourraient ne pas être modifiées à ce stade.
Et:
Étant donné que le comportement de l'exception a longtemps été spécifié dans JavaDoc, il est impossible de modifier le comportement de l'une ou l'autre méthode à ce stade. La fermeture ne résoudra pas le problème.
Comme tiré de: Rapport de bogue: Integer.parseInt () et Double.parseDouble () lèvent différentes exceptions sur null.
Comme d’autres l’ont dit: c’est probablement fait par différents auteurs.
Remarque: tout dans ce message est dans le code source de Java7-b147
Double.parseDouble()
entre dans une bibliothèque Sun (dans Sun.misc.FloatingDecimal
) la première chose importante à faire est que:
in = in.trim(); // 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 passe est:
if (s == null) {
throw new NumberFormatException("null");
}
Je suppose qu'il y a deux auteurs différents.