首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java8 CompletableFuture异常方法的惊人行为

Java8 CompletableFuture异常方法的惊人行为
EN

Stack Overflow用户
提问于 2014-12-12 02:51:08
回答 1查看 46.9K关注 0票数 45

我遇到了Java8 CompletableFuture.exceptionally方法的奇怪行为。如果我执行这段代码,它就能正常工作并打印java.lang.RuntimeException

代码语言:javascript
运行
复制
CompletableFuture<String> future = new CompletableFuture<>();

future.completeExceptionally(new RuntimeException());

future.exceptionally(e -> {
            System.out.println(e.getClass());
            return null;
});

但如果我在将来的处理中添加另一个步骤,如thenApply,异常类型将更改为java.util.concurrent.CompletionException,其中包含原始异常。

代码语言:javascript
运行
复制
CompletableFuture<String> future = new CompletableFuture<>();

future.completeExceptionally(new RuntimeException());

future.thenApply(v-> v).exceptionally(e -> {
            System.out.println(e);
            return null;
});

有什么理由会发生这种情况吗?在我看来,这是相当令人惊讶的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27430255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档