在检查我的错误处理代码时偶然发现了这一点。当您调用Integer.parseInt(null)
时,Java会引发NumberFormatException,而Float.parseFloat(null)
会引发NullPointerException。另请参见Float和Integer
造成这种差异的原因是特定的技术还是设计原因,还是仅仅是历史性的怪癖?
答案 0 :(得分:5)
这绝对是历史文物。
多年来,这种不一致和相关的文档问题已被作为Java Bug多次提出。例如:
最早,分配给该问题的Sun工程师写道:
合理的是,期望为null抛出相同的异常;但是,这些api很旧,可能此时无法更改。
将考虑使用Tiger。 [那是Java 5.0]
2002-12-03
然后一年后:
由于异常行为是长期存在的,并且已在JavaDoc中指定,因此此时更改任一方法的行为都是不切实际的。关闭将无法解决。
2003-10-21