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.
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%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:
Dann kannst du es so benutzen:
%Vor%Tags und Links java java-8 completable-future