我在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?
答案 0 :(得分:3)
只要您像示例中那样展平所有嵌套Futures
,抛出异常的级别无关紧要。如果在嵌套结构中的某个点抛出异常,那么您将停止进一步下降。由于扁平化,抛出的异常将被提升到顶层。从那里,您可以使用recover
方法处理异常。