CompleableFuture withFallback / behandelt nur einige Fehler

8

Ich erhalte Antworten von einem Serviceanruf über CompleableFuture. Ich möchte einige bekannte Ausnahmen behandeln, die der Dienst zurückgibt - z. B. Konflikte der optimistischen Concurrency-Kontrolle.

Hier ist, was ich habe. Gibt es eine bessere Möglichkeit, dies zu tun, was die Ausnahmen nicht umschließt oder SneakyThrows verwendet? Wrapping-Ausnahmen würden bedeuten, dass andere Exception-Handler Kausalketten untersuchen müssen, anstatt nur instanceof zu verwenden.

%Vor%

Entlang der gleichen Ader, gibt es eine Möglichkeit, Guaven mitFallback repliziert ohne die Wrap-Unwrap?

%Vor%

Der Vollständigkeit halber sehen Sie hier, wie es aussehen würde, wenn ich erlaubt die Ausnahmen umgebrochen hätte. (Ich habe einen Komponententest, um zu überprüfen, ob die ausgelöste Ausnahme die Kette durchläuft):

%Vor%     
Michael Deardeuff 16.08.2014, 08:32
quelle

2 Antworten

8

Die gewünschte Guavestil-Funktion könnte folgendermaßen implementiert werden:

%Vor%

ist beides, kompakter und spart Ressourcen durch die Wiederverwendung der Quell-Zukunft für den Fall, dass wir keine Transformationen durchführen wollen. Um dem Aufrufer jedoch die Möglichkeit zu geben, dasselbe ohne die Einführung einer anderen Hilfsmethode zu tun, wäre es sehr nützlich, die Methode zu ändern und ein BiFunction zu verwenden, das den Quell-Future als zusätzlichen Parameter erhält:

%Vor%

Dann kannst du es so benutzen:

%Vor%     
Holger 18.08.2014, 16:44
quelle
4

Der einzige Weg, an den ich denken kann, ist, eine Hilfsmethode wie diese zu definieren:

%Vor%

Es ist nicht hübsch, aber es wird Ihnen erlauben, Ausnahmen zu vermeiden:

%Vor%     
Misha 16.08.2014 22:34
quelle

Tags und Links