在Play中,如果正在初始化一个类 - 例如,configuration.get("badKey").get
被调用,我相信有一个java.lang.ExceptionInInitializerError
。但是,Play没有捕获或记录任何错误,它只是继续,坏了。
如何确保捕获或记录此内容,或者忽略其他内容?
它使网站停止,但我不知道它发生了。
我知道我不应该首先遇到这些错误。首先提示这一点的是Application.conf文件根据其本地环境或生产情况而有所不同。如果开发人员忘记将密钥添加到生产密钥,它可以使网站停止(静默)。但可以想象,也可能存在其他错误。
答案 0 :(得分:0)
您可以使用Play内置的Logger。
import play.Logger
try {
configuration.get("badKey").get
} catch {
case e:ExceptionInInitializerError => {
Logger.error("ExceptionInInitializerError")
Logger.error(e.getMessage())
}
case e:Exception => {
Logger.error("Exception")
Logger.error(e.getMessage())
}
}
或者编写一个访问默认设置的访问者或记录错误而无需尝试捕获
import play.Logger
import play.api.Play
object Conf {
private val config = Play.current.configuration
def get(key:String):String =
config.getString(key) match {
case Some(value:String) => value
case _ => {
Logger.warn("No value found in application.conf for [" + key + "]")
"some default value"
}
}
}