为什么Double.parseDouble(null)和Integer.parseInt(null)抛出不同的异常?
这是历史事故还是故意的?文档清楚地说明了两种类型的例外情况Double.parseDouble(...)和一种情况Integer.parseInt(),但似乎不一致:
Integer.parseInt(null); // throws java.lang.NumberFormatException: null
Run Code Online (Sandbox Code Playgroud)
然而
Double.parseDouble(null); // throws java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud) 我有一个存储数字的字符串.现在我想解析该字符串并获得浮点数.
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
try {
System.out.println(Integer.parseInt(" 2 "));
} catch(NumberFormatException e) {
System.out.println("Exception caught");
}
System.out.println(Float.parseFloat(" 2.4 "));
}
}
Run Code Online (Sandbox Code Playgroud)
现在在上面的代码中,如果你运行它将成功.我的问题是为什么在整数的情况下尾随空格抛出一段NumberFormatException时间解析一个浮点并不抛出一个?
PS:booolean和double解析的情况相同.
PPS:为什么java中存在不一致?我已经检查了源代码