2017-04-09 29 views
2

我在這裏找到了一些關於如何處理這個異常的答案,但是沒有解釋爲什麼會首先發生這種情況。我有以下代碼:爲什麼JSONObject的put方法拋出JSONException?

for (Map.Entry<String, Double> entry: qosMap.entrySet()) { 
     JSONObject qosEntry = new JSONObject(); 
     try { 
      qosEntry.put(entry.getKey(), entry.getValue()); 
     } catch (JSONException ex) { 
      Logger.getLogger(JSONUtil.class.getName()).log(Level.SEVERE, null, ex); 
     } 
} 

的qosMap將永遠是空的,在這個地圖中的數據始終有效。

什麼情況下會拋出異常?爲什麼我需要這個額外的代碼?

+3

你不能把重複鍵放在JSON中 –

+0

@ cricket_007他正在迭代地圖,所以不應該有任何重複鍵 –

+0

你應該檢查鍵或值是否爲空,因爲一些地圖支持空值 –

回答

1

假設你正在使用JSONObjectorg.json

org.json.JSONObject.put(String, double) : JSONObject 

它把一個鍵/ 對中的JSONObject。

參數:

按鍵:一鍵。 value:A double這是值。

返回:this

拋出:

JSONException如果關鍵是null或者號碼無效。

我知道這個數據總是 有效。爲什麼我需要有這個額外的代碼?

你可以讓方法拋出異常,因爲你不喜歡混亂你的代碼,也似乎你不能通過捕獲異常做任何有用的事情。

很明顯,您知道您傳遞的數據是有效的。然而圖書館不會知道。這就是爲什麼它拋出一個檢查的異常,只是爲了讓你知道它的失敗。

+0

是的,但這是我的問題點,我知道數據總是有效的。爲什麼我需要有這個額外的代碼? – Andrei

相關問題