在我的代码多次我用下面的方式来恢复一个失败的未来:如何在Scala中封装Play的状态?
myFuture.recover {
case t =>
Logger.error(s"foo bar foo, exception: ${t.getMessage}.")
InternalServerError(views.html.error(request, Messages("error.foo")))
}
我现在正在寻找一种方法,以消除重复代码封装此行为。我试图将它包装在课堂上,但奇怪的是,我无法解决apply
方法中的InternalServerError
。
class MyError(t: Throwable, logMsg: String, message: String) {
def apply(t: Throwable, logMsg: String, message: String) = {
Logger.error(logMsg)
InternalServerError(views.html.error(request, message))
}
}
任何想法如何解决这个问题?另外我怎么去request
参数?
谢谢!我非常喜欢这个解决方案。但是,该代码不能在我的盒子上编译。我得到以下错误:'预期的标识符,但'隐式'找到.'。 –
@JohnDoe你必须创建一个'包对象' – pamu
这是一个不错的解决方案,但建议您慎重使用隐含因为它会使代码复杂化很大。 –