2009-11-13 20 views

回答

25

圖例 - 你的答案可以改進;因爲如果你失敗numTries次,你會吞噬異常。好得多:

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

hm if(--numTries == 0)真的很危險。如果它是在0或更低的開始處呢?我更喜歡<1 – hudi 2012-11-06 08:28:08

5

我已經看到了一些辦法,但我用的是以下幾點:

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

這可能不是最好的辦法,但。如果您有任何其他建議,請將它們放在這裏。

編輯:更好的方法是由oxbow_lakes建議。請看看...

+2

這條信息屬於你自己的主題.. – BalusC 2009-11-13 20:00:47

+1

這是爲了解答你自己的問題:)希望它能幫助別人...... – Legend 2009-11-13 20:23:59

+2

@Legend - 我想如果你看看我的回答,會發現你的方法有缺陷 – 2009-11-13 20:36:37

1

嘗試面向方面的編程和@RetryOnFailure註釋從jcabi-aspects

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