调试时忽略return语句

时间:2015-03-13 11:31:24

标签: java debugging android-studio

我编写了一个创建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;

1 个答案:

答案 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"。