【发布时间】:2017-01-13 09:27:07
【问题描述】:
使用 Java 8 的强大功能 CompletableFuture,我想使用此新功能的异常来转换我的旧异步代码。但是检查的异常让我很困扰。这是我的代码。
CompletableFuture<Void> asyncTaskCompletableFuture =
CompletableFuture.supplyAsync(t -> processor.process(taskParam));
process方法的签名:
public void process(Message msg) throws MyException;
如何处理 ComletableFuture 中的检查异常?
【问题讨论】:
-
见stackoverflow.com/questions/18198176/… - 可能会作为副本关闭
-
@mjt 我认为这个问题值得在 CompletableFuture 的上下文中讨论,因为这个 API 对异常有特定的处理。
-
链接的问题更笼统,因此也涵盖了这个问题。
-
@Tunaki 可能存在与
CompletableFuture相关的更具体的重复项,例如stackoverflow.com/a/28961083/525036 和stackoverflow.com/q/23184964/525036,它们都提到了涉及completeExceptionnally()的解决方案并避免将异常包装在运行时异常中。 -
这里有一个解决方案,可以让您在不降低代码可读性的情况下使用检查异常:stackoverflow.com/a/49705336/14731
标签: java asynchronous java-8