代码抛出异常时,如何使用Java 8 CompletableFuture进行异常处理?

Raf:

我不了解你们,但是对我来说,当我看到一段代码时,这变得非常烦人,repeated并且在使用Services该throw异常时遇到了以下情况如下所示,在每个CompletableFuture步骤中,我都必须要做exception handling,基本上要重复这一部分,具体取决于您将要拥有多少个可完成的期货。

CompletableFuture<Void> future1Of15 = CompletableFuture.supplyAsync(() -> {
    List<SomePojo> somePojos = null;
    try {
        somePojos = someServiceThatThrowsException.getAll(SomePojo.class);
    } catch (SomeException e) {
       //Handle the exception
       e.printStackTrace();
    } 
    return somePojos; 
}).thenAcceptAsync(result -> //do something with the result); 

CompletableFuture<Void> future2Of15 = CompletableFuture.supplyAsync(() -> {
    List<OtherPojo> otherPojos = null;
    try {
        otherPojos = someServiceThatThrowsException.getAll(OtherPojo.class);
    } catch (SomeException e) {
           //Handle the exception
           e.printStackTrace();
    } 
    return otherPojos; 
}).thenAcceptAsync(result -> //do something with the result); 

现在重复上述x次数,您会注意到重复了try/catch块。就我而言,我经常打15-20这样的电话。

有没有办法将上面的代码转换为1或2行代码?为了说stop repeating myself关于exception handling内部supplyAsync lambda

Dawood ibn Kareem:

只需将一个方法添加到您的类中即可执行所有重复的代码,并以a Consumer<List<?>>作为参数传递给thenAcceptAsync最后一行。

private CompletableFuture<Void> getAndAcceptAsync(Consumer<List<?>> resultProcessor) {  
    return CompletableFuture.supplyAsync(() -> {
        List<SomePojo> somePojos = null;
        try {
            somePojos = someServiceThatThrowsException.getAll(SomePojo.class);
        } catch (SomeException e) {
           //Handle the exception
           e.printStackTrace();
        } 
        return somePojos; 
    }).thenAcceptAsync(resultProcessor);
}

然后,您可以根据需要多次拨打此电话。

future1Of15 = getAndAcceptAsync(result-> { do something } );
future2Of15 = getAndAcceptAsync(result-> { do something else } );

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

如何使用Java 8可选正常,可以有条件地返回一个值或抛出异常?

来自分类Java

CompletableFuture异常处理runAsync&thenRun

来自分类Java

在Java8可选抛出异常

来自分类Java

CompletableFuture的单独异常处理

来自分类Java

使用Collectors.toMap时处理自定义异常的Java 8

来自分类Java

Java 8:如何使用流中的异常抛出方法?

来自分类Java

CompletableFuture异常()和处理()吞下RuntimeException吗?

来自分类Java

如何处理CompletableFuture get()方法的异常

来自分类Java

抛出异常的Java 8 Lambda函数?

来自分类Java

处理流Java 8中的异常

来自分类Java

在Java中进行异常处理时从未抛出异常

来自分类Java

Java8 CompletableFuture recoveryWith等效吗?例如异常,但返回CompletableFuture <U>

来自分类Dev

Java 8 CompletableFuture的异常行为异常方法

来自分类Dev

使用Java 8中的Consumer函数进行异常处理

来自分类Dev

如何在Java 8 Stream中处理异常?

来自分类Dev

使用CompletableFuture抛出检查异常

来自分类Dev

在Java8中处理CompletableFuture中的运行时异常

来自分类Dev

最终在CompletableFuture中阻止等效的异常处理

来自分类Dev

Java 8 Guava前提条件在评估异常消息字符串时抛出NullPointerException

来自分类Dev

使用SpreadsheetApp.openById()时如何处理抛出的异常

来自分类Dev

让CompletableFuture例外地()处理supplyAsync()异常

来自分类Dev

在Java 8中使用Lambda进行异常处理

来自分类Dev

Java 8在执行GET请求时抛出Java 6不存在的异常

来自分类Dev

使用JDK 8处理异常

来自分类Dev

Java 8-如何使用CompletableFuture跟踪在异步并行流中调用的异常数

来自分类Dev

使用 java 8 foreach 循环调用方法和处理异常

来自分类Dev

在java 8中使用orElseThrow抛出用户定义的异常时出错

来自分类Dev

从 Optional.ifPresent() Java 8 抛出异常

来自分类Dev

Flux 处理时如何正确抛出异常?

Related 相关文章

  1. 1

    如何使用Java 8可选正常,可以有条件地返回一个值或抛出异常?

  2. 2

    CompletableFuture异常处理runAsync&thenRun

  3. 3

    在Java8可选抛出异常

  4. 4

    CompletableFuture的单独异常处理

  5. 5

    使用Collectors.toMap时处理自定义异常的Java 8

  6. 6

    Java 8:如何使用流中的异常抛出方法?

  7. 7

    CompletableFuture异常()和处理()吞下RuntimeException吗?

  8. 8

    如何处理CompletableFuture get()方法的异常

  9. 9

    抛出异常的Java 8 Lambda函数?

  10. 10

    处理流Java 8中的异常

  11. 11

    在Java中进行异常处理时从未抛出异常

  12. 12

    Java8 CompletableFuture recoveryWith等效吗?例如异常,但返回CompletableFuture <U>

  13. 13

    Java 8 CompletableFuture的异常行为异常方法

  14. 14

    使用Java 8中的Consumer函数进行异常处理

  15. 15

    如何在Java 8 Stream中处理异常?

  16. 16

    使用CompletableFuture抛出检查异常

  17. 17

    在Java8中处理CompletableFuture中的运行时异常

  18. 18

    最终在CompletableFuture中阻止等效的异常处理

  19. 19

    Java 8 Guava前提条件在评估异常消息字符串时抛出NullPointerException

  20. 20

    使用SpreadsheetApp.openById()时如何处理抛出的异常

  21. 21

    让CompletableFuture例外地()处理supplyAsync()异常

  22. 22

    在Java 8中使用Lambda进行异常处理

  23. 23

    Java 8在执行GET请求时抛出Java 6不存在的异常

  24. 24

    使用JDK 8处理异常

  25. 25

    Java 8-如何使用CompletableFuture跟踪在异步并行流中调用的异常数

  26. 26

    使用 java 8 foreach 循环调用方法和处理异常

  27. 27

    在java 8中使用orElseThrow抛出用户定义的异常时出错

  28. 28

    从 Optional.ifPresent() Java 8 抛出异常

  29. 29

    Flux 处理时如何正确抛出异常?

热门标签

归档