Versuchen Sie eine Verbindung bei Timeout in Java erneut

8

Ich habe eine Methode (unten), die die Quelle einer Webseite als String herunterzieht und zurückgibt. Es funktioniert alles gut und gut, aber wenn die Verbindung ausläuft, löst das Programm eine Ausnahme aus und beendet. Gibt es eine bessere Methode, dies zu tun, die es beim Timeout erneut versuchen würde, oder gibt es eine Möglichkeit, dies innerhalb dieser Methode zu tun?

%Vor%     
InsanityOnABun 05.09.2011, 21:13
quelle

5 Antworten

7

Hier ist ein Refactoring Ihres Codes, der den Download N mal wiederholen sollte. Habe es zwar nicht getestet, aber es sollte dich in die richtige Richtung stoßen.

%Vor%     
aioobe 05.09.2011, 21:16
quelle
1

Schreiben Sie eine Wrapper-Funktion und lassen Sie die connect-Exception austreten. Dann können Sie loop Ihre bestehende Funktion aufrufen, während Sie Verbindung Ausnahme bis zu einigen maximalen Wiederholungen erhalten.

Dies ist besser als das Einbetten einer for-Schleife in Ihre vorhandene Funktion, da sie logisch die Wiederholungslogik vom Hauptliniencode trennt. Und es ist einfacher zu lesen und zu verstehen, als Ergebnis.

    
Kevin 05.09.2011 21:21
quelle
1

Anstelle von

%Vor%

Sie können versuchen, ein längeres Timeout zu setzen, und Sie können die Timeout-Ausnahme weiterhin behandeln, indem Sie es

%Vor%     
bpgergo 05.09.2011 21:33
quelle
1

Sie könnten das Ganze in eine while Schleife einfügen:

%Vor%

Die return Anweisung bricht Sie aus der Schleife. Vielleicht möchten Sie auch die Anzahl der Versuche im Auge behalten und nach 5-10 aufhören, aus Höflichkeit, aber das ist die Grundform davon.

Bearbeiten

Die bessere Version, basierend auf Kommentaren:

%Vor%     
andronikus 05.09.2011 21:22
quelle
1

Ich halte AOP- und Java-Annotationen für eine gute Option. Ich würde empfehlen, einen Read-Made-Mechanismus von jcabi-aspects zu verwenden:

%Vor%     
yegor256 03.02.2013 08:25
quelle

Tags und Links