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