一尘不染

Java 如何实施重试捕获?

java

Try-catch旨在帮助处理异常。这意味着它将以某种方式帮助我们的系统更强大:尝试从意外事件中恢复。

我们怀疑在执行和指令(发送消息)时可能会发生某些事情,因此将其包含在try中。如果发生了几乎不可预料的事情,我们可以采取一些措施:编写渔获物。我不认为我们打电话来只是记录异常。我认为catch块旨在为我们提供从错误中恢复的机会。

现在,假设我们从错误中恢复了,因为我们可以修复错误所在。重试可能是超级好:

try{ some_instruction(); }
catch (NearlyUnexpectedException e){
   fix_the_problem();
   retry;
}

这将很快陷入永恒的循环,但是假设fix_the_problem返回true,然后我们重试。鉴于Java中没有这样的东西,你将如何解决此问题?解决该问题的最佳设计代码是什么?

鉴于我已经知道我所要的东西并没有被Java直接支持,所以这就像一个哲学问题。


阅读 537

收藏
2020-03-13

共1个答案

一尘不染

你需要将你try-catchwhile循环包含在这样的循环中:-

int count = 0;
int maxTries = 3;
while(true) {
    try {
        // Some Code
        // break out of loop, or return, on success
    } catch (SomeException e) {
        // handle exception
        if (++count == maxTries) throw e;
    }
}

我已采取countmaxTries避免陷入无限循环,以防你的中不断发生异常try block

2020-03-13