Java:我如何编写try-catch-repeat块?
我知道这样做的反制方法。 我想知道是否有一个很好的,紧凑的方式来做到这一点。
传奇 – 你的答案可以改进; 因为如果你的numTries
次数失败,你就会吞下这个例外。 好多了:
while (true) { try { // break; } catch (Exception e ) { if (--numTries == 0) throw e; } }
我见过几种方法,但我使用以下方法:
int numtries = 3; while(numtries-- != 0) try { ... break; } catch(Exception e) { continue; } }
这可能不是最好的方法。 如果您有任何其他建议,请将它们放在这里。
编辑:oxbow_lakes提出了一个更好的方法。 请看一下……
如果您已经在使用Spring,那么您可能希望为此行为创建一个方面,因为它是一个跨领域的问题,您需要创建的是一个切入点,它匹配您需要该function的所有方法。 见http://static.springsource.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj-example
从jcabi-aspects尝试面向方面的编程和@RetryOnFailure
注释:
@RetryOnFailure(attempts = 2, delay = 10, verbose = false) public String load(URL url) { return url.openConnection().getContent(); }