我在嘗試.exceptionally和.handle,但這些似乎並沒有工作。在scala中,你可以通過一個閉包來調用未來的方法,就像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