Java:我如何编写try-catch-repeat块?

时间:2009-11-13 19:53:49

标签: java exception exception-handling try-catch

我知道这样做的反制方法。我想知道是否有一个很好而紧凑的方法来做到这一点。

4 个答案:

答案 0 :(得分:27)

传说 - 你的答案可以改进;因为如果你失败numTries次,你就会吞下这个例外。好多了:

while (true) {
  try {
    //
    break;
  } catch (Exception e ) {
    if (--numTries == 0) throw e;
  }
}

答案 1 :(得分:5)

我见过几种方法,但我使用以下内容:

int numtries = 3;
while(numtries-- != 0)
   try {
        ...
        break;
   } catch(Exception e) {
        continue;
   }
}

这可能不是最好的方法。如果您有任何其他建议,请将它们放在这里。

编辑:oxbow_lakes提出了一个更好的方法。请看一下......

答案 2 :(得分:2)

如果您已经使用Spring,您可能希望为此行为创建一个方面,因为它是一个跨领域的问题,您需要创建的所有切入点都匹配所有需要该功能的方法。见http://static.springsource.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj-example

答案 3 :(得分:1)

尝试面向方面编程和来自@RetryOnFailurejcabi-aspects注释:

@RetryOnFailure(attempts = 2, delay = 10, verbose = false)
public String load(URL url) {
  return url.openConnection().getContent();
}