mehr Male in meinem Code verwende ich das folgende Muster eine versagende Zukunft zu erholen:Wie man den Status von Play in Scala einkapselt?
myFuture.recover {
case t =>
Logger.error(s"foo bar foo, exception: ${t.getMessage}.")
InternalServerError(views.html.error(request, Messages("error.foo")))
}
ich jetzt nach einer Möglichkeit suchen, dieses Verhalten, um zu kapseln Code-Duplizierung zu entfernen. Ich habe versucht, es in eine Klasse zu wickeln, aber seltsamerweise kann ich InternalServerError
innerhalb der apply
Methode nicht auflösen.
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))
}
}
Irgendeine Idee, wie ich das lösen kann? Wie gehe ich auch über den Parameter request
?
Vielen Dank! Ich mag diese Lösung wirklich. Dieser Code kompiliert jedoch nicht auf meiner Box. Ich erhalte den folgenden Fehler: 'identifier expected but 'implicit' found.'. –
@JohnDoe Sie müssen ein 'Paketobjekt' erstellen – pamu
Dies ist eine nette Lösung, aber Sie sollten implicts mit Bedacht verwenden, da es Ihren Code sehr kompliziert machen kann. –