For-Merehension Future,例外

时间:2014-11-03 19:24:57

标签: scala

我有两个Future,我想在其中一个上恢复异常:

def getId(): Future[Either[Exception, Id]] = ...
def result(): Future[Result] = ...

我尝试过这样的事情:

for {
  id <- getId()
  r <- result(id, param, param)
} yield {
  r
} recover {
  case e => println(e.getMessage)
}

有人可以帮助我吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您应该在正在处理的val而不是for处恢复。如果抛出异常,下面的代码将id和r设置为0。

for {
  id = getId()
  id.recover {
    case e => {
      println(e.getMessage)
      0
    }
  }
  r = result(id, param, param)
} yield r.recover {
    case e => {
      println(e.getMessage)
      0
    }
  }