我编写了一个创建JSONObject的方法,该方法曾经工作过。突然间我表现得很奇怪。使用调试器,我可以到达返回创建的JSONObject的行,但它总是跳转到返回null的最后一行,而不是insid catch块。调试器向我显示创建的对象是一个有效的JSONObject。
import org.json.JSONObject;
...
JSONObject returnJson = new JSONObject();
try {
returnJson.put("event", event);
returnJson.put("list", jsonArray);
returnJson.put("type", "list");
returnJson.put("container", container);
Log.d(TAG, "created");
Log.d(TAG, returnJson.toString());
return returnJson;
} catch (JSONException e) {
Log.e(TAG, e.getMessage(), e);
}
Log.d(TAG, "null returned"); // never called in the non-debugging mode
return returnJson;
答案 0 :(得分:1)
我想它并没有击中最后一个return returnJson;
而是前一个try
。我的意思是return
块中的代码不抛出异常。
我目睹了private static String method() {
try {
Class clazz = AnyClass.class;
return clazz.getName(); // place a break point #1
} catch(Exception ignored) { }
String result = "An exception caught.";
return result; // place another break point #2
}
语句中的调试器中断,但在某些我不太了解的情况下,这些语句实际上并没有被击中。
我刚刚编写了重现的示例代码:
{{1}}
肯定会在#1 打破然后"停止"在#2 也是。该方法实际上返回" package.name.AnyClass"。