gpt4 book ai didi

java - 如果发生异常,如何重试 try block 中的特定代码段?

转载 作者:行者123 更新时间:2023-12-01 07:25:26 24 4
gpt4 key购买 nike

我需要使用 JSOUP 解析来自 URL 的 HTML 表,目前一切工作正常。现在我想添加一个重试机制,如果我看到任何异常。下面是我的代码 -

public void collectMetrics() {
try {
URL url = new URL("some_url");
Document doc = Jsoup.parse(url, 9000);
for (Map.Entry<String, String> entry : mappings.entrySet()) {
calculateDiskFree(doc, entry.getValue(), entry.getKey());
}
// if it comes here, then it means everything is done successfully
// so no retry has to happen now
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

如果 catch block 中发生任何异常,我想重试执行 try block 中的所有内容 n 次。可以吗?

最佳答案

你可以把它放在一个循环中。

boolean successful = false;
while (!successful) {
try {
URL url = new URL("some_url");
Document doc = Jsoup.parse(url, 9000);
for (Map.Entry<String, String> entry : mappings.entrySet()) {
calculateDiskFree(doc, entry.getValue(), entry.getKey());
}
successful = true;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

但是您可能想考虑如果它一直失败会发生什么。如果您只想重试特定次数,可以使用 for 循环。

for (int retries = 0; retries < 3; ++retries) {
try {
URL url = new URL("some_url");
Document doc = Jsoup.parse(url, 9000);
for (Map.Entry<String, String> entry : mappings.entrySet()) {
calculateDiskFree(doc, entry.getValue(), entry.getKey());
}
break;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

关于java - 如果发生异常,如何重试 try block 中的特定代码段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734275/

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