Несколько раз в течение моего кода я использую следующий шаблон для восстановления неисправного будущим:Как инкапсулировать статус Play в Scala?
myFuture.recover {
case t =>
Logger.error(s"foo bar foo, exception: ${t.getMessage}.")
InternalServerError(views.html.error(request, Messages("error.foo")))
}
Я теперь ищу способ, чтобы герметизировать это поведение, чтобы удалить дублирование кода. Я попытался обернуть его в классе, но, как ни странно, я не могу разрешить InternalServerError
внутри метода apply
.
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
Это приятное решение, но вам рекомендуется использовать implicits разумно, так как это может значительно усложнить ваш код. –