相关疑难解决方法(0)

功能性Java - whenComplete和exception之间的交互

在这段代码中:

doSomethingThatMightThrowAnException()
  .whenComplete((result, ex) -> doSomethingElse()})
  .exceptionally(ex -> handleException(ex));
Run Code Online (Sandbox Code Playgroud)

当有从异常doSomethingThatMightThrowAnException,都doSomethingElsehandleException运行,或者是通过异常无论是消费whenComplete还是exceptionally

编辑:

doSomethingThatMightThrowAnException返回一个CompletableFuture,可能completeExceptionally.这是我所说的例外.

java functional-programming java-8

18
推荐指数
1
解决办法
1万
查看次数

CompletionStage是否总是在CompletionException中包装异常?

CompletionStage的Javadoc指出:

[...]如果一个阶段的计算突然以(未经检查的)异常或错误终止,那么所有需要完成的依赖阶段也会异常完成,并且CompletionException将异常作为其原因.

看作异常完成总是包含异常,CompletionException为什么这样做exceptionally(),whenComplete()handle()代表异常Throwable代替CompletionException

这很重要,因为它可以防止人们直接在这些方法中重新抛出异常.

这些方法是否有可能接收除以外的异常CompletionException或者我可以安全地强制演员到这种类型吗?

(我在本地运行了一些测试,以及挖掘CompletableFuture源代码,乍一看,我没有看到如何抛出任何其他类型的异常.)

java completable-future

16
推荐指数
1
解决办法
2389
查看次数