0

我正在使用 Scala slick 来处理我的 Mysql 数据库。

我正在使用 scala.util.Try 包装所有调用

我想根据问题有不同的行为

  • 如果数据库已关闭,最终我希望我的 webapp 返回 503

  • 如果一个奇怪的查询通过我的数据库层并且我的代码有一个错误,那么我想返回一个 500

经过一番谷歌搜索后,您似乎可以获得各种带有错误代码的不同异常,我不确定要查找什么。

使用 slick 我正在使用 com.mysql.jdbc.driver

谢谢

4

1 回答 1

3

Slick/MySQL 会MySQLSyntaxErrorException在语法错误和CommunicationsException无法访问数据库时抛出异常。

这是一个快速示例,它将捕获这两种类型的异常:

try {
    Database.forURL("jdbc:mysql://some-host:3306/db-name", 
                    driver = "com.mysql.jdbc.Driver", 
                    user="", 
                    password="") withSession { session: Session =>
      implicit val s = session
      ...
    }
} catch {
    case e: MySQLSyntaxErrorException =>
        ... handle the syntax error ...
        // You may want to define your own Exception that wraps the MySQL one
        // and adds more context
    case e: CommunicationsException =>
        ... handle the connection error ...
}

然后,在您的 webapp 代码中,您需要捕获自定义异常(请参阅代码中的注释)并相应地返回 HTTP 代码。

于 2013-03-22T17:00:20.450 回答