gpt4 book ai didi

scala - 如何捕获任何 scalatra 操作中的所有错误?

转载 作者:行者123 更新时间:2023-12-01 14:33:44 24 4
gpt4 key购买 nike

我正在使用 scalatra 将 MongoDB 数据“导出”到 JSon,我的操作非常简单,例如:

   get("/") {
val title = db.get_collection("main", "api", "title")
send_json(title)
}

如果出现问题,我想发送 HTTP 错误和文本,另一方面,它将被转换为对用户有意义的内容。
所以方法变成了:
   get("/") {
try {
val title = db.get_collection("main", "api", "title")
send_json(title)
} catch {
case e:java.util.NoSuchElementException => send_error("DB malformed", InternalError)
case e:com.mongodb.MongoException => send_error("Can not connect to MongoDB", InternalError)
case e => send_error("Internal Error", InternalError)
}
}

try catch 比实际方法大,我需要为每个方法都这样做,这个类乍一看变成了一个丑陋的 try catch 集合。
有什么方法可以避免或最小化代码中的难看和分散注意力的 try catch 吗?我是 Scala(和 Java BTW)的新手,所以我想我错过了一些东西。

我不希望 DB 对象发送 JSON,因此在 db.get_collection 方法上使用 try catch 不是一种选择。

最佳答案

有一个特殊的路由处理程序:

error {
case e: Throwable => {
redirect("/")
}
}

通过更改 case语句,您可以打开错误类型。

关于scala - 如何捕获任何 scalatra 操作中的所有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9481145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com