【问题标题】:Very simple JSONObject unreported exception org.json.JSONException at design time设计时非常简单的 JSONObject 未报告异常 org.json.JSONException
【发布时间】:2014-10-11 04:52:11
【问题描述】:

这很简单:使用 Android Studio,我无法构建项目,因为我收到错误:

错误:java:未报告的异常 org.json.JSONException;必须被抓住或 宣布被抛出

这是有问题的代码:

public static JSONObject toJsonObject(String json){
    JSONObject jsonObj = new JSONObject(json);
    return jsonObj;
}

我正在导入 org.json.JSONObject;顺便说一句。

波浪形的红线位于“new JSONObject(json)”下方。它似乎不喜欢被传递一个字符串,但是我所见过的所有地方,例如https://github.com/douglascrockford/JSON-java/blob/master/JSONObject.java 建议可以。

我已尝试将类和方法设为非静态,并已重建项目/重新启动 Android Studio。

我知道这一定是我错过的一些简单的事情......

【问题讨论】:

  • 使用 try catch 语句

标签: java android json jsonobject


【解决方案1】:

你必须使用try-catchThrow JSONException

public static JSONObject toJsonObject(String json){
    try{
            JSONObject jsonObj = new JSONObject(json);
            return jsonObj;
    }
    catch (JSONException e)
    {
    //do something
    }
  }

【讨论】:

    【解决方案2】:

    我认为这是因为您没有在代码中使用 try-catch 或 throw。在代码中使用 try-catch 块。然后检查问题是否解决..

    【讨论】:

      【解决方案3】:

      您几乎总是必须将所有 JSONObject 和 JSONArray 用法包装在捕获 JSONException 的 try-catch-blocks 中。在大多数情况下,它是永远不会运行的样板代码。但是,在使用 new JSONObject(...) 和 new JSONArray(...) 的情况下,try-catch-block 至关重要:如果传递的 String 不是有效的 JSON 字符串,它会抛出异常。确保您总是以某种方式处理它。在您的情况下,我会推荐这个(其中 TAG 是您的班级名称):

      public static JSONObject toJsonObject(String json){
          try {
              return new JSONObject(json);
          } catch (JSONException e) {
              Log.e(TAG, "Invalid JSON string: " + json, e);
              return null;
          }
      }
      

      如果您没有在 toJsonObject(...) 方法中放置 try-catch-block 而是在方法声明中添加“throws JSONException”(这实际上可以解决错误),则完整方法将变为顺便说一句,完全多余,因为它没有做任何 JSONObject 构造函数没有做的事情。

      【讨论】:

      • 谢谢大家 - 我已将此标记为答案,因为它有最好的描述,但你没事!我添加了 try-catch,它现在可以工作了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多