【问题标题】:Java JSONObject#has throwing exceptionJava JSONObject#有抛出异常
【发布时间】:2015-04-13 18:55:16
【问题描述】:

我正在尝试检查 JSONObject 是否具有特定键。这是我的代码:

    JSONObject meta = App.meta();
    int sum = 0;
    JSONObject mapping;
    if(!meta.has("readMessagesMap")){  <--- this line jumps to...
        return 0;        <--- never called
    }else{
        try { <--- never called
            mapping = meta.getJSONObject("readMessagesMap");
            [...]
            return sum;
        } catch (JSONException e) {
            e.printStackTrace();
            return 0; <--- ...directly to here
        }
    }

meta 是一个有效的JSONObject

当我单步执行时,if 语句不知何故直接跳转到 catch 块内的return 0 行,甚至没有进入 try 块。我在 try 行有断点,e.printStackTrace 行,它们只是没有被调用。堆栈跟踪也不打印。我不知道为什么会这样。我已经重启了 Android Studio 和我的应用,但还是一样。

【问题讨论】:

  • 尝试返回不同的值并打印出来。
  • 从调用代码来看,返回值是零,还是抛出异常?
  • @Blackbelt 这很奇怪。我首先做了 if 语句返回 -1 和 catch 块中的 return 语句返回 -2,即使调试器在其他地方执行,它也返回 -1。 Android Studio 中有“干净的项目”吗?
  • @nasch 查看我对 Blackbelt 的评论。
  • 我认为 IDE 只是向您显示正在执行的内容的令人困惑的指标。在我看来,catch 块并没有真正被执行,但由于某种原因,调试器显示代码在那里停止。如果您的日志记录和返回值符合您的预期,我不会担心。

标签: java android debugging android-studio jsonobject


【解决方案1】:

这是一个符号损坏问题。我已经清理了这个项目,它就跑了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2012-07-23
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多