なぜFloat.parseFloatは、()はNumberFormatExceptionとNullPointerExceptionがなく、Integer.parseInt()の両方が唯一のNumberFormatExceptionがスローを投げるのか?

時間警察:

私のエラー処理コードを確認しながら、この偶然発見。あなたは呼び出すとInteger.parseInt(null)Javaのに対し、NumberFormatExceptionがスローにFloat.parseFloat(null)NullPointerExceptionがスローされます。またのドキュメントを参照してくださいフロート整数

この違いのために、特定の技術やデザインの理由があるのか​​、それだけで歴史的ないたずらのですか?

スティーブンC:

これは間違いなく歴史的な成果物です。

この矛盾および関連ドキュメントの問題は、長年にわたりJavaのバグとして数回提起されています。例えば:

これらの最も初期では、問題に対処するために割り当てられていたSunのエンジニアがこれを書きました:

nullをスローするために、同じ例外を期待するのは合理的です。しかし、これらのAPIのは非常に古く、この時点で変更することができない場合があります。

タイガーのために検討していきます。【つまりは、Java 5.0でした]

2002年12月3日

そして、一年後:

例外動作が長年とのJavaDocに指定されているので、この時点でいずれかのメソッドの動作を変更することは非現実的です。修正されませんよう閉会。

2003年10月21日

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=136801&siteId=1