我遇到了Java8 CompletableFuture.exceptionally方法的奇怪行为。如果我执行这段代码,它就能正常工作并打印java.lang.RuntimeException
CompletableFuture<String> future = new CompletableFuture<>();
future.completeExceptionally(new RuntimeException());
future.exceptionally(e -> {
            System.out.println(e.getClass());
            return null;
});但如果我在将来的处理中添加另一个步骤,如thenApply,异常类型将更改为java.util.concurrent.CompletionException,其中包含原始异常。
CompletableFuture<String> future = new CompletableFuture<>();
future.completeExceptionally(new RuntimeException());
future.thenApply(v-> v).exceptionally(e -> {
            System.out.println(e);
            return null;
});有什么理由会发生这种情况吗?在我看来,这是相当令人惊讶的。
https://stackoverflow.com/questions/27430255
复制相似问题