如果completableFuture失败,如何记录?

时间:2015-03-24 20:41:01

标签: java java-8 completable-future

我有这个方法:

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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