为什么Double.parseDouble(null)和Integer.parseInt(null)会抛出不同的exception?

为什么Double.parseDouble(null)和Integer.parseInt(null)会抛出不同的exception?

这是一个历史性的事故还是故意的? 文档清楚地说明了Double.parseDouble(...)Integer.parseInt()两种types的exception,但似乎并不一致:

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

然而

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

期望为null抛出相同的exception是合理的; 然而,这些API是非常古老的,在这一点上可能无法改变。

和:

由于exception行为在JavaDoc中是长期存在的并且已经被指定,所以此时改变任一方法的行为是不切实际的。 闭幕,不会修复。

从: Bug报告:Integer.parseInt()和Double.parseDouble()抛出不同的空例外。

像其他人一样表示:这可能是由不同的作者。

注意:这篇文章中的所有内容都在Java7-b147的源代码中

Double.parseDouble()进入Sun库(在sun.misc.FloatingDecimal )发生的第一件重要事情是:

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

Integer.parseInt()是在Integer类中手动完成的。 发生的第一件重要事情是:

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

我猜想有两个不同的作者。