我知道这样做的反制方法。我想知道是否有一个很好而紧凑的方法来做到这一点。
答案 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)
尝试面向方面编程和来自@RetryOnFailure
的jcabi-aspects注释:
@RetryOnFailure(attempts = 2, delay = 10, verbose = false)
public String load(URL url) {
return url.openConnection().getContent();
}