如何在Scala中处理NoSuchElementException而不抛出异常

时间:2015-05-21 14:04:17

标签: scala exception-handling

我正在使用Scala的Play框架。我有Postgresql数据库。它通过以下代码获取数据: -

def eventById(id: Long): Option[EventRow] = {
    val action = events.filter(_.id === id)
    val results = db.run(action.result.head)
    val notFound = None: Option[EventRow]
      try {
        Some(Await.result(results, Duration.Inf))
      } catch {
        case e: Exception => Logger.info(s"Failed to fetch event by id: $e.")
          notFound
      } finally {
      }
  }
}

如果数据未绑定,则抛出异常。在这里我不想抛出异常。我想返回notFound。我甚至无法在不抛出异常的情况下进行编译。

如果在数据库中找不到事件,有没有办法返回notFound?

请告诉我?谢谢!

1 个答案:

答案 0 :(得分:0)

尝试:

def eventById(id: Long): Option[EventRow] = {
  val action = events.filter(_.id === id)
  val res: Future[Option[EventRow]] = db.run(action.result.headOption)
  Await.result(res, Duration.Inf)
}