在我的代碼多次我用下面的方式來恢復一個失敗的未來:如何在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
這是一個不錯的解決方案,但建議您慎重使用隱含因爲它會使代碼複雜化很大。 –