gpt4 book ai didi

java - 调试时忽略 return 语句

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:27 25 4
gpt4 key购买 nike

我编写了一个创建 JSONObject 的方法,该方法曾经有效。突然我的行为很奇怪。使用调试器,我可以到达返回创建的 JSONObject 的行,但它总是跳转到返回 null 的最后一行,而不进入 catch block 。调试器向我显示创建的对象是有效的 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;

最佳答案

我猜它没有命中最后一个return returnJson;而是前一个。我的意思是 try block 内的代码没有抛出异常。

我亲眼目睹了调试器在 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”。

关于java - 调试时忽略 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29031131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com