Я использую скалатру для «экспорта» данных 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 больше, чем у фактического метода, и мне нужно сделать это для каждого метода, класс на первый взгляд становится уродливой коллекцией try catch.Есть какой-нибудь способ избежать или минимизировать плохо выглядящую и отвлекающую попытку поймать весь код?Я новичок в Scala (и Java BTW), поэтому я предполагаю, что что-то упустил.
Я не хочу, чтобы объект DB отправлял JSON, поэтому использование метода catch в методе db.get_collection не является опцией.