你是對的:這是不一致的。移動,沒有什麼可以在這裏看到...... ;-) JDK庫非常大,隨着時間推移而增長,並且存在各種不一致。我不得不承認這一點令我感到吃驚,我覺得有必要仔細檢查你的斷言和實際行爲(以防與文檔有所不同):http://ideone.com/18W8W8)但我們走了。
由於JBpoints out,一個線索不一致的根本原因可能是Integer.parseInt
是在JDK從一開始,但是Double.parseDouble
在1.2加入。所以也許考慮在這兩個時間之間更具體地討論這個問題。
SO不會讓我張貼的答案用上面的鏈接沒有代碼,所以:
try {
Integer.parseInt(null); // throws java.lang.NumberFormatException: null
}
catch (Exception e) {
System.out.println("Integer: " + e.getClass().getName());
}
try {
Double.parseDouble(null); // throws java.lang.NullPointerException
}
catch (Exception e) {
System.out.println("Double: " + e.getClass().getName());
}
輸出:
Integer: java.lang.NumberFormatException
Double: java.lang.NullPointerException
同意。作爲一個指示,parseDouble()自1.2開始存在,而parseInt()從開始就存在。他們可能決定應該通過在1.1或1.2中拋出NullPointerException來持續處理null,但不能改變parseInt()來保持向後兼容性。 – 2014-11-08 15:37:26