Ben scalatra kullanıyorum etmek Json için "ihracat" Bir MongoDB veri, hareketlerim gibi çok basit: bir şey, diğer tarafta ters giderse HTTP hatası ve bir metin göndermek istediğinizHerhangi bir scalatra eylemindeki tüm hataları nasıl yakalarsınız?
get("/") {
val title = db.get_collection("main", "api", "title")
send_json(title)
}
kullanıcı için anlamlı bir şeye dönüştürülecektir.
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 gerçek usulde olduğu büyüktür ve her yöntemle, ilk bakışta deneyin catch çirkin bir koleksiyon haline sınıf için bunu yapmak gerekir: Yani yöntem becames. Kötü görünen ve dikkat dağıtıcı kodları engellemek veya en aza indirmek için herhangi bir yol var mı? Ben Scala (ve Java BTW) için yeniyim, bu yüzden bir şeyleri kaçırdığımı düşünüyorum.
DB nesnesinin JSON göndermesini istemiyorum, bu nedenle db.get_collection yönteminde try catch'u kullanmak bir seçenek değil.
benim son çözüm oldu: 'val ErrorHandling: PartialFunction [Atılabil, Birim] = {' Ben errorHandler kullanırsanız , elimde etkisiz olması gerekiyor için bu adla ilgili bir hata var. Aynı zamanda java.lang'a ihtiyaç duyuluyordu. İstisna yerine Except – user1216071
@ user1216071 Tamam, kodu buna göre düzelttim, bu yüzden başkalarının bunu anlaması gerekmeyecek (eğer yorumunuzu kaçırırlarsa). –