私は次のように私の行動は、非常に単純です、JSONに「輸出」MongoDBのデータをにscalatraを使用しています:私は何かが間違って行けば、他の側で、HTTPエラーやテキストを送信したいどのようにスカラのアクションですべてのエラーをキャッチする?
get("/") {
val title = db.get_collection("main", "api", "title")
send_json(title)
}
ユーザーにとって意味のあるものに変換されます。 だから、方法はbecames:
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キャッチを避けるか最小限にする方法はありますか?私はスカラ(とJavaのBTW)に慣れていないので、何かが足りないと思う。
DBオブジェクトにJSONを送信しないようにするため、db.get_collectionメソッドでtryキャッチを行うことはオプションではありません。あなたはこのような何かを行うことができるように
私の最終的な解決策だった: 'ヴァルerrorHandling:私はのErrorHandlerを使用する場合は部分写像[Throwableの、単位] = {' は、私はオーバーライドする必要がありますし、その名前についてのエラーを得ました。 例外の代わりにjava.lang.Throwableが必要なようにも見えました – user1216071
@ user1216071それに応じてコードを修正しました。 –