小编Roy*_*ood的帖子

斯卡拉期货。如果其中之一失败则采取行动

我有一种情况,我希望将来同时执行多个任务,这样,如果其中一个失败,其他任务仍然可以执行。如果失败了,我想记录一下错误。我希望我的父线程能够判断每个线程是否成功,然后根据该线程执行一些操作。例如,如果其中一项期货失败,则打印“嘿,其中一项期货失败”

val futureA = Future(doTaskThatReturnsABoolean)
val futureB = Future(doTaskThatReturnsABoolean)
val futureC = Future(doTaskThatReturnsABoolean)

futureA.onFailure (case t => println(future A failed ) + t.getMessage)
futureB.onFailure (case t => println(future B failed ) + t.getMessage)
futureC.onFailure (case t => println(future C failed ) + t.getMessage)

if (one of these futures failed) {
  println("One of the futures failed")
  throw new someNewError
}
Run Code Online (Sandbox Code Playgroud)

如果任何或所有的期货都失败了,我想记录他们的堆栈跟踪记录,但是在所有期货都有机会运行之前,我不想使整个程序出错。因为他们可能由于不同的原因而出错,所以我不想只重复他们的错误,而是想抛出一个新的错误。

我一直在阅读http://docs.scala-lang.org/overviews/core/futures.html,但无法理解这一点。

我不想使用“等待”,因为这需要时间,并且我想给期货提供尽可能多的时间。现在,让我们假设它们“将”完成,但是不确定的时间范围完全取决于数据大小。

scala future exception

3
推荐指数
1
解决办法
615
查看次数

标签 统计

exception ×1

future ×1

scala ×1