CompletableFuture的exceptionally

CompletableFuture的exceptionally


代码:

private void test() {System.out.println("开始...");CompletableFuture.supplyAsync(new Supplier() {@Override
        public String get() {try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}// 此处故意抛出一个空指针异常。
            // 导致代码处理逻辑转入到exceptionally(new Function()
            if (true) {throw new NullPointerException();}System.out.println("返回 zhang");return "zhang";}}).exceptionally(new Function() {@Override
        public String apply(Throwable throwable) {System.out.println("exceptionally - apply " + throwable.toString());return "发生异常!";}}).whenCompleteAsync(new BiConsumer() {@Override
        public void accept(String s, Throwable throwable) {System.out.println("accept : " + s);}});System.out.println("运行至此.");
}


运行输出:

07-12 10:32:26.797 17266-17266/? I/System.out: 开始...
07-12 10:32:26.801 17266-17266/? I/System.out: 运行至此.
07-12 10:32:29.803 17266-17318/zhangphil.test I/System.out: exceptionally - apply :java.util.concurrent.CompletionException: java.lang.NullPointerException
07-12 10:32:29.805 17266-17318/zhangphil.test I/System.out: accept : 发生异常!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部