Scala,恢复嵌套的期货?

时间:2015-08-28 16:27:34

标签: scala future recover

我在Scala中有一些嵌套的Futures。我想知道 - 我可以使用一个recover来捕获所有扔掉的东西,还是每个Future都有自己的恢复? 想象一下,method1和method2同时生成Future[Option[A]]

method1.flatMap {

  case Some(object1) =>

    method2(object1).map {
      case Some(object2) => ...
      case None => ...
    }.recover { case t => .... } <--- DO I NEED THIS?

  case None => ....

}.recover { case t => ... } <--- OR THIS ALONE IS ENOUGH?

1 个答案:

答案 0 :(得分:3)

只要您像示例中那样展平所有嵌套Futures,抛出异常的级别无关紧要。如果在嵌套结构中的某个点抛出异常,那么您将停止进一步下降。由于扁平化,抛出的异常将被提升到顶层。从那里,您可以使用recover方法处理异常。