【发布时间】: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