Ausnahmen und wie versucht man am besten, wenn eine Verbindung zurückgesetzt wird?

8

Ich habe einen Code, der eine Verbindung zu einer URL herstellt, um eine Datei herunterzuladen, und führt dann eine Verarbeitung für sie durch. Manchmal erhalte ich jedoch den Fehler java.net.SocketException: Connection reset .

Ich möchte versuchen, die Datei herunterzuladen, wenn ich diesen Fehler erhalte, sagen wir höchstens dreimal, bevor ich aufgib. Ich würde gerne wissen, was der beste Weg wäre, dies zu strukturieren.

Sieht das Folgende gut aus? Scheint es akzeptabel, den Block try-catch innerhalb einer Schleife while zu platzieren, oder gibt es einen besseren Ansatz?

Alle Hilfe wird sehr geschätzt!

%Vor%     
QuakerOat 16.11.2010, 19:49
quelle

3 Antworten

1

Ich bin darauf hingewiesen worden, dass das Schlucken einer Ausnahme immer schlecht ist, aber ich denke hier, das ist der einzige Weg zu sagen, ob die Verbindung tatsächlich zurückgesetzt wurde. Ich nehme an, dass Sie die Ausnahme gemäß Ihren Anforderungen behandeln, das ist also alles.

Aber ich würde es trotzdem so machen, dass du die letzte Ausnahme nicht schluckst. Wenn es dreimal fehlschlägt, sollten Sie diese Ausnahme erneut auslösen oder irgendwie fehlschlagen.

    
shoebox639 16.11.2010, 19:57
quelle
3

Dies ist die Art von Sache, die ich eher einem kugelsicheren Verbindungspool für mich überlassen möchte, anstatt es selbst zu schreiben.

    
duffymo 16.11.2010 20:00
quelle
-1

AOP- und Java-Anmerkungen sollten helfen. Ich würde einen Read-Made-Mechanismus von jcabi-aspects empfehlen (ich bin ein Entwickler):

%Vor%

Sie können auch RetryFunc ausprobieren von Cactoos .

    
yegor256 03.02.2013 08:35
quelle