我正在使用 Scala slick 来处理我的 Mysql 数据库。
我正在使用 scala.util.Try 包装所有调用
我想根据问题有不同的行为
如果数据库已关闭,最终我希望我的 webapp 返回 503
如果一个奇怪的查询通过我的数据库层并且我的代码有一个错误,那么我想返回一个 500
经过一番谷歌搜索后,您似乎可以获得各种带有错误代码的不同异常,我不确定要查找什么。
使用 slick 我正在使用 com.mysql.jdbc.driver
谢谢
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 代码。