2017-04-09 26 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

相关问题