gpt4 book ai didi

java - 什么是java CompletableFuture 相当于scala Future rescue and handle

转载 作者:行者123 更新时间:2023-11-29 04:39:15 24 4
gpt4 key购买 nike

我看到 CompletableFuture 有一个方法 handle 与 scala Futurehandle 相同> 基本上将成功和异常全部转换为成功,成为 mapflatMap 上游(或 thenApplythenCompose 在 java 中世界)。

在 Java 中,twitter future rescue(或 scala future recoverWith)的等价物是什么?

scala 中的

rescue 基本上就像旧的 java try....catch,然后重新抛出更多信息,这样使用起来会很好。例如,在 twitterFuture.handlescalaFuture.recover 中,返回单位是 U,因此您返回响应。在 twitterFuture.rescuescalaFuture.recoverWith 中,它返回 Future[U] 因此可以采取某些异常(exception),添加更多信息并返回 future .exception(xxxxx)

最佳答案

对于 recover ,如果你不需要返回一个父类(super class)并且想要吞下所有异常,你可以只使用 exceptionally :

CompletableFuture<T> future = ...;
CompletableFuture<T> newFuture = future.exceptionally(_exc -> defaultValue);

否则,你需要使用 handle 得到 CompletableFuture<CompletableFuture<U>> , 然后使用 thenCompose 折叠它:

CompletableFuture<T> future = ...;
CompletableFuture<T> newFuture = future.handle((v, e) -> {
if (e == null) {
return CompletableFuture.completedFuture(v);
} else {
// the real recoverWith part
return applyFutureOnTheException(e);
}
}).thenCompose(Function.identity());

关于java - 什么是java CompletableFuture 相当于scala Future rescue and handle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39940494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com