Bunu yapmak için karşı yaklaşımın farkındayım. Bunu yapmak için güzel ve kompakt bir yol olup olmadığını merak ediyordum.Java: Try-catch-repeat bloğu nasıl yazılır?
cevap
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;
}
}
hm if (--numTries == 0) gerçekten tehlikeli. Ya 0 ya da daha düşük başlangıçta? <1 tercih ederim – hudi
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 ...
, bir çapraz kesme endişe olduğu gibi bu davranış için bir yönünü oluşturmak isteyebilirsiniz ve oluşturmak için gereken tüm tüm yöntemleri eşleşen bir pointcut olduğunu işlevselliğe ihtiyacım var. jcabi-aspects den http://static.springsource.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj-example
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();
}
Kendi girişimleri gönderin. – BalusC