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%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.
Sie könnten das Ganze in eine while
Schleife einfügen:
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%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%Tags und Links java