使用scala期货处理异常

时间:2017-05-02 17:14:39

标签: scala future

我对Scala Futures有疑问。我有一个带有两个参数的函数:x:Future [Int]和y:Future [Int]。

该函数应返回以:

结束的未来
  • x的值,如果x成功完成,
  • y的值,如果x失败并且y成功完成,
  • 如果x失败且y失败则失败的异常。

我似乎无法弄清楚如何做到这一点。

目前的代码:

def myFunction(x: Future[Int], y: Future[Int]): Future[Int] = {
  x.onSuccess {
    case result => return Future(result)
  }
  x.onFailure {
    case e => 
      y.onSuccess {
        case res => return Future(res)
      }
      y.onFailure {
        case f => throw f
      }
  }
}

1 个答案:

答案 0 :(得分:3)

简单地:

x.recoverWith { case _ => y }