java - 如果 completableFuture 失败,如何记录?

标签 java java-8 completable-future

我有这个方法:

default <U> CompletableFuture<U> submit(Supplier<U> supplier) {
    return CompletableFuture.supplyAsync(supplier, .....getThreadPool());
}

它被不同的类广泛使用,但目前如果计算失败则没有默认日志记录。我的第一个方法是:

.exceptionally(throwable ->
                .....handleThrowable(throwable, runnable);
)

但是这个方法是为了恢复,因为我必须返回一些东西。如果我只想记录它怎么办?

最佳答案

这将处理异常并返回原始结果,因此下游代码也将有机会处理异常。这是你想要的吗?

default <U> CompletableFuture<U> submit(Supplier<U> supplier) {
    return CompletableFuture.supplyAsync(supplier, ....)
            .whenComplete((u, ex) -> {
                if (ex != null) {
                    handleThrowable(ex);
                }
            });
}

关于java - 如果 completableFuture 失败,如何记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29242466/

相关文章:

java - maven - 创建生成的 jar 文件的存档

java-8 - 对原始类型的方法引用有害吗?

java - 结合 CompletableFuture 和 JdbcTamplate 的正确方法是什么?

java-8 - Akka actor 和 Java8 CompletableFuture 可以安全地结合在一起吗?

java - SunX509 的用途是什么?它可以与使用 IbmX509 的各方合作吗?

java - 隐藏基于 if 语句动态添加的按钮

java - 如果我从多个线程使用 JSch,我应该如何使用它

java - 关于Customer Annotation Processor,为什么getElementsAnnotatedWith()返回的set大小为0

Java8 整数流与 IntStream

java - 如何处理连接多个异步 CompletableFutures?