当前位置: 首页 > 知识库问答 >
问题:

CompletableFuture已完成,但出现异常

毕富
2023-03-14

已完成未来() 返回已使用给定值完成的已完成未来

我们如何构造一个已经异常完成的< code>CompletableFuture?

也就是说,我希望future抛出一个异常,而不是返回值。

共有2个答案

公冶嘉
2023-03-14

Java 9提供了< code > completablefuture . failed future(Throwable ex)来做这件事。

公冶鸣
2023-03-14

与Java 9和更高版本不同,Java 8没有为这种场景提供静态工厂方法。可以改用默认构造函数:

CompletableFuture<T> future = new CompletableFuture<>();
future.completeExceptionally(exception);
 类似资料:
  • 我研究了以下代码:如何组合3个或多个CompletionStages?,但在这篇文章中,只有来自CompletableFutures的已完成任务被组合。 我如何将异步的CompletableFuture与Complted CompletableFuture相结合,以便将已经完成的CompletableFuture的结果与尚未计算结果的结果相结合?

  • 问题内容: __ 我没有看到一种处理异步结果异常的明显方法。例如,如果我想重试异步操作。我会期望像这样的事情,但是handleAsync并没有按照您认为的那样做- 异步地在另一个线程上运行回调。在这里返回CompletionStage是不正确的。当天的危害问题:就是因为是为了什么? AskPong在哪里问演员: 问题答案: __ 在试图找出用Java 8完成Scala的restoreWith的正确

  • 到目前为止我在Java方面的努力

  • 问题内容: 我有以下代码: 抛出一个。我不想在这里处理此问题,但是将异常从抛出给的调用者。 问题答案: 您的代码建议您稍后以相同的方法使用异步操作的结果,因此无论如何都必须进行处理,因此一种处理方法是 在的异步处理中抛出的所有异常都将在调用时包装为一个,除了我们已经包装在一个。 当重新引发的原因时,我们可能会遇到未检查的异常,即or的子类或我们的自定义检查的异常。上面的代码通过多次捕获来处理所有这

  • 假设我想在收到特定异常时恢复某个值,否则返回失败的未来。我希望是这样的: 如果函数会抛出检查过的异常,我想在链式方法中处理它。我尝试过和,但都无法编译。是否为这种情况提供了任何解决方案?我知道接口是方法的参数,它不会抛出任何异常——在这种情况下,我只想返回已经失败的未来。我想找到使用Java8的解决方案。