Try-catch 旨在帮助处理异常。这意味着它会以某种方式帮助我们的系统变得更加健壮:尝试从意外事件中恢复。
我们怀疑在执行和指令(发送消息)时可能会发生一些事情,所以它被包含在 try 中。如果发生了几乎出乎意料的事情,我们可以做一些事情:我们编写 catch。我不认为我们打电话只是为了记录异常。我认为 catch 块是为了给我们从错误中恢复的机会。
现在,假设我们从错误中恢复,因为我们可以修复错误。重试可能会非常好:
try{ some_instruction(); } catch (NearlyUnexpectedException e){ fix_the_problem(); retry; }
这将很快陷入永恒循环,但假设 fix_the_problem 返回 true,然后我们重试。鉴于Java中没有这样的东西,你将如何解决这个问题?解决这个问题的最佳设计代码是什么?
这就像一个哲学问题,因为我已经知道我所要求的不是 Java 直接支持的。
您需要将您的try-catch内部包含在while这样的循环中:-
try-catch
while
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; } }
我已经采取count并maxTries避免陷入无限循环,以防异常继续发生在您的try block.
count
maxTries
try block