Sono consapevole di un approccio controcorrente per farlo. Mi stavo chiedendo se c'è un modo carino e compatto per farlo.Java: come scrivere un blocco try-catch-repeat?
risposta
Legenda - la tua risposta potrebbe essere migliorata; perché se si fallisce numTries
volte, si ingerisce l'eccezione. Molto meglio:
while (true) {
try {
//
break;
} catch (Exception e) {
if (--numTries == 0) throw e;
}
}
hm if (--numTries == 0) è veramente pericoloso. Cosa succede se è all'inizio 0 o inferiore? Preferirei <1 – hudi
Ho visto alcuni approcci ma Io uso il seguente:
int numtries = 3;
while(numtries-- != 0)
try {
...
break;
} catch(Exception e) {
continue;
}
}
questo potrebbe non essere l'approccio migliore però. Se hai altri suggerimenti, per favore mettili qui.
MODIFICA: un approccio migliore è stato suggerito da oxbow_lakes. Si prega di dare un'occhiata a questo ...
se si utilizza già primavera, si potrebbe desiderare di creare un aspetto di questo comportamento in quanto è una preoccupazione trasversale e tutto il necessario per creare è un pointcut che corrisponde a tutti i metodi che bisogno della funzionalità vedi http://static.springsource.org/spring/docs/2.5.x/reference/aop.html#aop-ataspectj-example
Prova aspetto programmazione orientata e @RetryOnFailure
annotazione dal jcabi-aspects:
@RetryOnFailure(attempts = 2, delay = 10, verbose = false)
public String load(URL url) {
return url.openConnection().getContent();
}
Si prega di inviare i propri tentativi. – BalusC