我正在使用下面的代碼。第一行是java.lang.NumberFormatException
,第二行是java.lang.NullPointerException
。我無法弄清楚爲什麼。爲什麼會出現不同的異常?
int intValue =Integer.parseInt(null);
Double double1 = Double.parseDouble(null);
我正在使用下面的代碼。第一行是java.lang.NumberFormatException
,第二行是java.lang.NullPointerException
。我無法弄清楚爲什麼。爲什麼會出現不同的異常?
int intValue =Integer.parseInt(null);
Double double1 = Double.parseDouble(null);
因爲這就是它們是如何實現的,
int intValue =Integer.parseInt(null);
如果我們看看parseInt函數的實現,它們都扔NumberFormatException
如果輸入字符串是null
而且Double double1 = Double.parseDouble(null);
在parseDouble(String s)
方法還有另外一個方法調用即FloatingDecimal.readJavaFormatString(s).doubleValue();
在readJavaFormatString(s)
方法到底在哪NullPointerException
拋出
FloatingDecimal.readJavaFormatString(s)
方法
它也被記錄爲:[parseDouble](http:///docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble%28java.lang.String%29)和[parseInt](http://docs.oracle.com/javase/ 7 /文檔/ API /爪哇/郎/ Integer.html#parseInt函數%28java.lang.String%29)。 – jpmc26
現在這是一個相當的答案:D – 2014-01-09 05:25:46
@ jpmc26 +1比檢查實現簡單:) – gowtham
這兩個功能是如何實現的在各自的班級。
parseInt函數方法驗證參數:
if (s == null) { throw new NumberFormatException("null"); }
parseDecimal方法首先調用修剪輸入字符串參數:
in = in.trim(); // throws NullPointerException if null
老實說,你能指望的行爲是?真? –
閱讀Head First Java中有關異常的章節 - http://www.amazon.in/Head-First-Java-Kathy-Sierra/dp/8173666024?tag=googinhydr2765-21 ..他們很好地解釋了異常。 –
停止downvoting,這個問題不值得這些許多downvotes。這是一個有效的疑問,一個解析器拋出一個異常,另一個則不同。一個有效的原因可能在那裏。 –