2009-11-13 6 views

Répondre

25

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; 
    } 
} 
+5

hm si (--numTries == 0) est vraiment dangereux. Que faire si c'est au début 0 ou moins? Je préférerais <1 – hudi

5

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 ...

+2

Ce message appartient à votre propre topicstart .. – BalusC

+1

Cela devait être l'un de ceux répondre à votre propre question :) avec l'espoir que cela va aider les autres ... – Legend

+2

@Legend - Je pense que si vous regardez ma réponse, vous verra que votre approche est défectueuse –

1

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(); 
}