我正在使用 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 方法上尝试捕获。