栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

功能性Java-whenComplete与异常之间的交互

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

功能性Java-whenComplete与异常之间的交互

的文档

whenComplete
说:

返回一个 具有与此阶段相同的结果或异常 的新CompletionStage ,该阶段 在此阶段完成时执行给定的操作。

(强调我的)

这意味着该阶段不会吞噬异常,因为它应该具有相同的结果或异常。但是,您可能通过这样的事实感到惊讶的是后续阶段将获得前一阶段内的包裹外

CompletionException
,所讨论的在这里,所以它不是完全一样的例外:

CompletableFuture<String> test=new CompletableFuture<>();test.whenComplete((result, ex) -> System.out.println("stage 2: "+result+"t"+ex))    .exceptionally(ex -> { System.out.println("stage 3: "+ex); return ""; });test.completeExceptionally(new IOException());

将打印:

stage 2: null   java.io.IOExceptionstage 3: java.util.concurrent.CompletionException: java.io.IOException

请注意,您始终可以在一个阶段上附加多个操作,而不是随后进行链接:

CompletableFuture<String> test=new CompletableFuture<>();test.whenComplete((result, ex) -> System.out.println("stage 2a: "+result+"t"+ex));test.exceptionally(ex -> { System.out.println("stage 2b: "+ex); return ""; });test.completeExceptionally(new IOException());stage 2b: java.io.IOExceptionstage 2a: null  java.io.IOException

当然,由于现在阶段

2a
和之间没有依赖关系
2b
,因此它们之间没有排序,并且在异步操作的情况下,它们可以同时运行。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号