return语句在调试时被忽略
问题描述:
我写了一个方法来创建一个JSONObject,用于工作。突然间我表现得很奇怪。通过调试器,我可以到达返回创建的JSONObject的那一行,但它总是跳转到返回null的最后一行,而不会去执行catch块。调试器告诉我,创建的对象是一个有效的JSONObject。return语句在调试时被忽略
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;
答
我想它并没有打到最后的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 ,然后 “停” 在#2了。这个方法实际上返回“package.name.AnyClass”。
它能正常工作*不在调试器中吗?也许调试器的工作源与类文件不同步...... – 2015-03-13 11:32:47
我不这么认为。因为我无法调试,我只能猜测,但该项目的行为就像没有返回json对象一样。无论如何,我清除所有缓存并重新启动,我无法修复任何可能的不同步问题。 – richard 2015-03-13 11:35:08
那么你可以很容易地添加*日志记录*来查看它没有调试到底有多远...... – 2015-03-13 11:35:44