Wiederholung nach Ausnahme in Groovy
In Ruby, ich kann schreiben:
begin
do_something # exception raised
rescue
# handles error
retry # restart from beginning
end
Gibt es etwas ähnliches in Groovy/Java?
Fand ich diese aber vielleicht gibt es etwas besseres ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie bauen Sie sich Ihre eigene helper-Methode in Groovy zu Kapseln, das retry-Logik.
(Vorausgesetzt, eine definition von MultipleFailureException ähnlich GPars' AsyncException)
dann im code, können Sie diese Methode verwenden, wie folgt.
oder, mit einer unterschiedlichen Anzahl von Wiederholungen und Fehlerbehandlung Verhalten:
IllegalStateException
wäre die Verwendung eine der Ausnahmen (der erste? die Letzte? schwer zu sagen), als Ihrer Ursache, wäre es sehr mehr nützlich, als Sie konnte sehen, warum es hat nicht geklappt. In der Produktion würde ich nicht wollen, ein stacktrace gedruckt werden jedes mal, wenn ein Versuch fehlgeschlagen. Ich will nur wissen, wenn alle wiederholversuche gescheitert.body.call()
wiederholt wird - in diesem Fall wird die Standard-Schließung konnte nur{ ->}
catch(Exception e) {
dann java.lang.Fehler (oder Unterklassen), die nicht Wiederherstellbare würde nicht gefangen werden, und würde-bail-out sofort.Diesen Tagen werden die Menschen beraten, Sie zu verwenden ScheduledExecutorService zu implementieren dieser Art von try-catch-retry-Funktionalität, wie
Thread.sleep()
gilt als veraltet und potenziell schlecht für die performance. Ich würde verweisen Sie auf eine gute Antwort auf diese von cletus, aber kann nicht für das Leben von mir finden. Ich werde aktualisieren Sie meine Antwort, wenn ich es ausgraben.EDIT: es gefunden: Wie retry Funktion Anforderung nach einer bestimmten Zeit Hoffentlich ist das eine Hilfe für Sie.
Ich vorschlagen kann, zu emulieren irgendwie das gleiche (ich bin mir nicht sicher über die Semantik von
retry
):