【发布时间】:2020-03-14 15:15:49
【问题描述】:
当任务执行失败并出现异常时,有什么方法可以获得引发的原始异常?看起来 CompletableFuture.join 在失败的情况下总是抛出 CompletionException 。
我们最初的异常包含额外的属性(成员变量),这些属性必须用于以适当的方式处理异常。
【问题讨论】:
标签: java multithreading exception java-8 completable-future
当任务执行失败并出现异常时,有什么方法可以获得引发的原始异常?看起来 CompletableFuture.join 在失败的情况下总是抛出 CompletionException 。
我们最初的异常包含额外的属性(成员变量),这些属性必须用于以适当的方式处理异常。
【问题讨论】:
标签: java multithreading exception java-8 completable-future
来自the docs:
为了更好地符合常见函数形式的使用,如果完成此 CompletableFuture 所涉及的计算引发异常,则此方法将引发(未经检查的)CompletionException 以底层异常作为其原因 .
换句话说,
Exception original = completableException.getCause();
【讨论】:
CompletionException,那么原因可能是null。