为什么Float.parseFloat()抛出NumberFormatException和NullPointerException但Integer.parseInt()只抛出NumberFormatException?

问题描述 投票:8回答:1

在检查我的错误处理代码时偶然发现了这一点。当你调用Integer.parseInt(null)时,Java会抛出一个NumberFormatException而Float.parseFloat(null)会抛出一个NullPointerException。另请参阅FloatInteger的文档

这种差异是否有特定的技术或设计原因,还是仅仅是一个历史怪癖?

java exception
1个回答
5
投票

它绝对是一件历史文物。

多年来,这种不一致和相关的文档问题已经作为Java Bug多次提出。例如:

在最早的这些中,被指派处理这个问题的Sun工程师写道:

期望为null抛出相同的异常是合理的;但是,这些api很老,可能无法在此时更改。

将考虑为老虎。 [那是Java 5.0]

2002-12-03

然后一年后:

由于异常行为是长期存在的并且在JavaDoc中指定,因此此时更改任一方法的行为是不切实际的。关闭不会修复。

2003-10-21

© www.soinside.com 2019 - 2024. All rights reserved.