2009-11-13 18 views

cevap

25

Açıklama - cevabınız; Çünkü numTries kez başarısız olursanız, istisnayı yutursunuz. Çok daha iyi: Zaten Spring kullanıyorsanız

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

hm if (--numTries == 0) gerçekten tehlikeli. Ya 0 ya da daha düşük başlangıçta? <1 tercih ederim – hudi

5

Birkaç yaklaşımlar gördük ama şu kullanın:

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

Bu olsa iyi yaklaşım olmayabilir. Başka önerileriniz varsa, lütfen bunları buraya yerleştirin.

DÜZENLEME: oxbow_lakes tarafından daha iyi bir yaklaşım önerilmiştir. Lütfen bir göz atın ...

+2

Bu mesaj kendi konularına aittir .. – BalusC

+1

Bu, kendi sorunuzu cevaplayanlardan biri olmalıydı :) başkalarına yardımcı olacağı umuduyla ... – Legend

+2

@Legend - Cevabıma bakarsanız düşünüyorum Yaklaşımınızın kusurlu olduğunu görecek –

1

deneyin yönü yönelimli programlama ve @RetryOnFailure ek açıklama bakın:

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