为什么会出现不同的例外情况?

时间:2014-01-09 04:59:51

标签: java

我正在使用以下代码。第一行是java.lang.NumberFormatException,第二行是java.lang.NullPointerException。我无法弄清楚原因。

int intValue =Integer.parseInt(null);
Double double1 = Double.parseDouble(null);

2 个答案:

答案 0 :(得分:11)

因为这是如何实施的,

int intValue =Integer.parseInt(null);

如果我们查看parseInt实现,如果输入字符串是NumberFormatException

,它们会抛出null

enter image description here

Double double1 = Double.parseDouble(null);

parseDouble(String s)方法中,还有另一种方法调用,即FloatingDecimal.readJavaFormatString(s).doubleValue();
 在readJavaFormatString(s)方法中,正好引发了NullPointerException

enter image description here

FloatingDecimal.readJavaFormatString(s)方法

enter image description here

答案 1 :(得分:0)

这是两个函数在各个类中实现的方式。

parseInt 方法验证参数:

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

parseDecimal 方法首先在输入字符串参数上调用trim:

in = in.trim(); // throws NullPointerException if null