如何在游戏框架2.4中捕获异常

时间:2015-07-02 14:14:06

标签: scala playframework

我试图弄清楚如何在Play Framework 2.4中的异步操作调用的函数中捕获未来的异常。但是,我使用恢复的代码似乎永远不会被执行 - 我总是得到一个执行异常页面而不是一个Ok响应。

行动代码是:

def index = Action.async {
    cardRepo.getAll()
    .map {
      cards => Ok(views.html.cardlist(cards))
    }.recover{
      case e: Exception => Ok(e.getMessage)
    }
  }

cardRepo.getAll中的代码(我已经硬编码了一个新的Exception进行实验)是:

def getAll(): Future[Seq[Card]] = {

    implicit val cardFormat = Json.format[Card]

    val cards = collection.find(Json.obj())
      .cursor[Card]()
      .collect[Seq]()

    throw new Exception("OH DEAR")

    cards
  }

我在Stack Overflow上看过类似的问题,但我看不出我做错了什么。

1 个答案:

答案 0 :(得分:1)

感谢Mon Calamari - 我想我现在明白了。未来来自collection.find,所以如果里面有错误,我的代码就可以了,但是因为我已经把它放在它上面的函数中,所以那时没有Future。