私は例外的に.handleを試みていましたが、それらは機能していないようです。スカラーでは、finallyブロック(これは例外と成功で実行されます)のようなクロージャーを使用して、将来のメソッドを呼び出すことができます。また、チェーン上の例外または成功をそのまま伝えることができます。結果やエラーを伝播中にCompletableFutureコールバックを呼び出す方法は?
私は
CompletableFuture<Object> future = newFuture.handle((r, e) -> {
if(r != null)
return r;
else if(e != null)
return e;
else
return new RuntimeException("Asdf");
});
Assert.assertTrue(future.isCompletedExceptionally());
...これを試してみましたが、そのテストは、例外(どのような奇妙な)の結果と完全に成功し、将来として失敗しました。
例外を 'handle()'に正しく伝播するには、例外を 'スローする '必要があります。そうでなければ、結果を変換せずに副作用をしたいだけなら 'whenComplete'を使用するべきですという答えは最善の方法です。 – acelent