как выявить все ошибки в любом действии scalatra?

Я использую 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)
    }
  }

Улов попыток больше, чем фактический метод, и мне нужно сделать это для каждого метода, класс на первый взгляд стал уродливой коллекцией уловов попыток. Есть ли способ избежать или свести к минимуму плохо выглядящие и отвлекающие попытки перехватить весь код? Я новичок в Scala (и Java BTW), поэтому я думаю, что мне что-то не хватает.

Я не хочу, чтобы объект DB отправлял JSON, поэтому использование try catch в методе db.get_collection не вариант.

12
задан user1216071 28 February 2012 в 11:35
поделиться