gpt4 book ai didi

java - 将 Java 抛出异常替换为自定义消息并继续

转载 作者:行者123 更新时间:2023-12-02 03:32:57 26 4
gpt4 key购买 nike

我的 Java for 循环 检查 ids() String[] array 中不同的 id 如下:

BackTest.java

.....
for (String id: ids()) {
//..do something
addResult(result(id));
}

其中 addResult() 将结果添加到某些 Java map 中。在这里,如果 id 不存在,即 http status!=200,那么我将抛出一个新的异常,如以下代码片段所示:

Api.Java

......
if (status != 200) {
String error = "No additional error message received";
if (result != null && result instanceof JSONObject) {
JSONObject obj = (JSONObject) result;
if (obj.containsKey("error")) {
error = '"' + (String) obj.get("error") + '"';
}
}

throw new ApiException(
"API returned HTTP " + status +
"(" + error + ")"
);
}

现在在我的第一个 for 循环中,如果循环中的第一个 id 不存在,那么我将抛出一个异常,这使得我的整个过程失败并且无法检查作为 id 数组一部分的其他 id。如何确保即使在数组中的第一个 id 上失败,代码也应继续检查其他 id?

我可以考虑用 try-catch block 替换抛出新异常。举个例子就好了。

最佳答案

你可以像这样处理异常;

for(String id : ids()) {
try {
addResult(result(id));
} catch(ApiException e) {
System.err.println("Oops, something went wrong for ID "+id+"! Here's the stack trace:");
e.printStackTrace();
}
}

这将捕获异常,从而阻止它传播超过此点并因此结束循环,并且它将打印一条消息和堆栈跟踪。

关于java - 将 Java 抛出异常替换为自定义消息并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37823274/

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