繁体   English   中英

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

[英]Java: How would I write a try-catch-repeat block?

我知道这样做的对策。 我想知道是否有一种不错且紧凑的方法来做到这一点。

图例-您的答案可能会有所改善; 因为如果您失败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,那么您可能想为此行为创建一个方面,因为它是一个跨领域的问题,您需要创建的只是一个切入点,该切入点与所有需要该功能的方法相匹配。 参见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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM