2

首先,我想说我很抱歉给这样一个模棱两可的标题......

我想知道如何在以下场景中处理异常......我有一个 Struts 操作,它从 EJB 接收字符串:

try{       
  JSONObject data = new JSONObject(result);   //result is String 
  String gatewayId = data.getString("gatewayId");
  session.setAttribute("gatewayId", gatewayId);
}catch(Exception e){
  System.out.println(e.getMessage());
}

编辑 进口是:

import org.apache.struts2.json.*;
import org.json.*;

如果 A json 是:

{"gatewayId":100, "mask":4}

如果 B json 是:

{"success":false, "errorDesc":"bla bla"}

如果 gatewayId在 JSON 中,我没有问题,但问题是从 EJB 接收的 JSON 可以(但不是必须)具有该键:值对。

如果有一个Boolean JsonObject.hasString()方法,由于首先在 if/else if 语句中检查字符串的存在,我不会有任何异常,但是这样我就无法避免异常......

我认为我可以做的第一件事是根据异常类型使用不同的 catch 块,但似乎所有异常都是通用JSONException类型,而且我不应该将任何 JSON 处理代码放在 catch 块中,因为该代码可以也会抛出它的异常。

请记住,我不是在这里寻找我的 JSON 问题的确切解决方案,而是在您没有帮助您避免异常的功能时如何解决此类问题的一般解释......

我希望我的问题是有道理的......

4

1 回答 1

3

尝试

data.has("gatewayId");

这会有所帮助。

于 2012-06-11T10:30:36.317 回答