Je suis conscient d'une approche de compteur pour ce faire. Je me demandais s'il y avait une façon agréable et compacte de le faire.Java: Comment écrire un bloc try-catch-repeat?
Répondre
Légende - votre réponse pourrait être améliorée sur; car si vous échouez numTries
fois, vous avalez l'exception. Beaucoup mieux:
while (true) {
try {
//
break;
} catch (Exception e) {
if (--numTries == 0) throw e;
}
}
hm si (--numTries == 0) est vraiment dangereux. Que faire si c'est au début 0 ou moins? Je préférerais <1 – hudi
Je l'ai vu quelques approches mais j'utiliser les éléments suivants:
int numtries = 3;
while(numtries-- != 0)
try {
...
break;
} catch(Exception e) {
continue;
}
}
Cela pourrait ne pas être la meilleure approche cependant. Si vous avez d'autres suggestions, veuillez les mettre ici.
EDIT: Une meilleure approche a été suggérée par oxbow_lakes. S'il vous plaît jeter un oeil à cela ...
si vous utilisez déjà le printemps, vous pouvez créer un aspect de ce comportement car il est une préoccupation transversale et tout ce que vous devez créer est un pointcut qui correspond à toutes vos méthodes besoin de la fonctionnalité. voir http://static.springsource.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj-example
Essayez la programmation orientée aspect et @RetryOnFailure
annotation de jcabi-aspects:
@RetryOnFailure(attempts = 2, delay = 10, verbose = false)
public String load(URL url) {
return url.openConnection().getContent();
}
S'il vous plaît poster vos propres tentatives. – BalusC