2009-11-13 18 views

Antwort

25

Legende - Ihre Antwort könnte verbessert werden; denn wenn du numTries mal scheiterst, schluckst du die Ausnahme. Viel besser:

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

hm if (--numTries == 0) ist wirklich gefährlich. Was ist, wenn es am Anfang 0 oder niedriger ist? Ich würde <1 bevorzugen – hudi

5

Ich habe ein paar Ansätze gesehen, aber ich folgendes: obwohl

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

Dies ist der beste Ansatz nicht sein könnte. Wenn Sie noch weitere Vorschläge haben, legen Sie sie bitte hier.

EDIT: Ein besserer Ansatz wurde von oxbow_lakes vorgeschlagen. Bitte sehen Sie sich das an ...

+2

Diese Nachricht gehört in Ihren eigenen Themenstart .. – BalusC

+1

Dies sollte einer sein, der Ihre eigene Frage beantwortet :) mit der Hoffnung, dass es anderen hilft ... – Legend

+2

@Legend - Ich denke, wenn Sie auf meine Antwort, Sie schauen werde sehen, dass dein Ansatz fehlerhaft ist –

1

Try aspektorientierte Programmierung und @RetryOnFailure Anmerkung aus jcabi-aspects:

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