调用supplyAsync时尝试并捕获

sfdcdev

我是CompletableFuture的新手,我想调用一个方法MetadataLoginUtil :: login,它可以引发异常。但是,尽管我写了“异常”的代码,但是下面的代码没有被编译。它说我必须在try&catch中包装MetadataLoginUtil :: login'。

请指教。提前谢谢!

public void run() throws ConnectionException {
    CompletableFuture<Void> mt = CompletableFuture.supplyAsync(MetadataLoginUtil::login)
            .exceptionally(e -> {
                System.out.println(e);
                return null;
            })
            .thenAccept(e -> System.out.println(e));
}
合唱团

CompletableFuture.supplyAsync(Supplier<U>)需要一个java.util.function.Supplier<U>实例,并且Supplier.get()方法的签名不允许检查的异常。为了清楚地看到这一点,请注意CompletableFuture.supplyAsync(MetadataLoginUtil::login)相当于

CompletableFuture<Void> mt = CompletableFuture.supplyAsync(new Supplier<Void>() {
        @Override
        public Void get() {
            return MetadataLoginUtil.login();
        }
    })

显然无法编译。

您可以处理内的异常Supplier,将其更改CompletableFuture.supplyAsync(MetadataLoginUtil::login).exceptionally(e -> {System.out.println(e); return null; } )

CompletableFuture.supplyAsync(() -> {
        try {
            return MetadataLoginUtil.login();
        } catch (Exception e) {
            System.out.println(e);
            return null;
        }
    })

它不是很漂亮,但是CompletableFuture的API似乎无法很好地与已检查的异常一起使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试捕获块:无论是在类本身中还是在类外调用方法时

来自分类Dev

C4-尝试通过NSString调用方法时捕获异常

来自分类Dev

尝试从对象调用get()或set()时得到“未捕获的TypeError:未定义不是函数”

来自分类Dev

C4-尝试通过NSString调用方法时捕获异常

来自分类Dev

尝试在clojurescript中支持跨浏览器前缀时出现“未捕获的TypeError:非法调用”

来自分类Dev

在创建新对象时使用“尝试并捕获”

来自分类Dev

NPE尝试在listViewItem中捕获onClickListener时

来自分类Dev

尝试快速保存捕获的图像时出错

来自分类Dev

尝试使用 IIFE 时未捕获的 TypeError

来自分类Dev

尝试将focus()调用到元素ID时收到错误消息:“未捕获的TypeError:无法读取属性'focus'为null”

来自分类Dev

未捕获的范围错误尝试从表单输入 JS 中创建变量时超出了最大调用堆栈

来自分类Dev

从NgRx效果调用API时捕获错误

来自分类Dev

尝试调用WCF服务时出错

来自分类Dev

尝试多次调用ANT目标时失败

来自分类Dev

尝试调用方法时强制关闭

来自分类Dev

尝试调用方法时收到名称错误

来自分类Dev

尝试调用PHP类时出错

来自分类Dev

加载jsp时尝试调用servlet

来自分类Dev

当方法抛出异常时,Netbeans不会强迫我尝试捕获

来自分类Dev

当“尝试.. IOError除外”无法捕获时,如何处理FileNotFoundError?

来自分类Dev

处理jdbc连接时尝试/捕获的最佳方法

来自分类Dev

尝试每秒钟捕获帧时出现OpenCV错误

来自分类Dev

使用多个getter时,尝试捕获而不是空检查

来自分类Dev

尝试读取csv数据时出现未捕获的SyntaxError

来自分类Dev

尝试每秒钟捕获帧时出现OpenCV错误

来自分类Dev

尝试捕获时未处理的异常会影响性能

来自分类Dev

尝试输入连接字符串时捕获到ArgumentException

来自分类Dev

创建对象时尝试并捕获运行时问题

来自分类Dev

Paypal错误消息“买方无法付款。” 尝试多次捕获时

Related 相关文章

  1. 1

    尝试捕获块:无论是在类本身中还是在类外调用方法时

  2. 2

    C4-尝试通过NSString调用方法时捕获异常

  3. 3

    尝试从对象调用get()或set()时得到“未捕获的TypeError:未定义不是函数”

  4. 4

    C4-尝试通过NSString调用方法时捕获异常

  5. 5

    尝试在clojurescript中支持跨浏览器前缀时出现“未捕获的TypeError:非法调用”

  6. 6

    在创建新对象时使用“尝试并捕获”

  7. 7

    NPE尝试在listViewItem中捕获onClickListener时

  8. 8

    尝试快速保存捕获的图像时出错

  9. 9

    尝试使用 IIFE 时未捕获的 TypeError

  10. 10

    尝试将focus()调用到元素ID时收到错误消息:“未捕获的TypeError:无法读取属性'focus'为null”

  11. 11

    未捕获的范围错误尝试从表单输入 JS 中创建变量时超出了最大调用堆栈

  12. 12

    从NgRx效果调用API时捕获错误

  13. 13

    尝试调用WCF服务时出错

  14. 14

    尝试多次调用ANT目标时失败

  15. 15

    尝试调用方法时强制关闭

  16. 16

    尝试调用方法时收到名称错误

  17. 17

    尝试调用PHP类时出错

  18. 18

    加载jsp时尝试调用servlet

  19. 19

    当方法抛出异常时,Netbeans不会强迫我尝试捕获

  20. 20

    当“尝试.. IOError除外”无法捕获时,如何处理FileNotFoundError?

  21. 21

    处理jdbc连接时尝试/捕获的最佳方法

  22. 22

    尝试每秒钟捕获帧时出现OpenCV错误

  23. 23

    使用多个getter时,尝试捕获而不是空检查

  24. 24

    尝试读取csv数据时出现未捕获的SyntaxError

  25. 25

    尝试每秒钟捕获帧时出现OpenCV错误

  26. 26

    尝试捕获时未处理的异常会影响性能

  27. 27

    尝试输入连接字符串时捕获到ArgumentException

  28. 28

    创建对象时尝试并捕获运行时问题

  29. 29

    Paypal错误消息“买方无法付款。” 尝试多次捕获时

热门标签

归档