簡體   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