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(); }