Scala,恢复嵌套的期货?

Scala, recover nested Futures?

我在 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?

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