Существует рекомендуемый способ обработки исключений в Play, описанный здесь: здесь
это выглядит так:
@Singleton
class ErrorHandler extends HttpErrorHandler {
def onClientError(request: RequestHeader, statusCode: Int, message: String): Future[Result] = {
Future.successful(
Status(statusCode)("A client error occurred: " + message)
)
}
def onServerError(request: RequestHeader, exception: Throwable): Future[Result] = {
Future.successful(
InternalServerError("A server error occurred: " + exception.getMessage)
)
}
}
И это синглтон. Я предполагаю, что поскольку оно не содержит состояния, оно не должно замедлять или усложнять вещи.
Я знаю, что синглтоны считаются запахом кода, и люди обычно стараются избегать их как чумы.
Так почему же здесь нет ничего плохого в данном конкретном случае?
Я также знаю, что эта схема обработки ошибок довольно распространена, но мои коллеги и я обеспокоены тем фактом, что это синглтон.