Quiero usar una forma genérica de administrar códigos de error 5xx, digamos específicamente el caso cuando la base de datos está inactiva en toda mi aplicación de primavera. Quiero un bonito json de error en lugar de un seguimiento de pila.
Para los controladores, tengo una @ControllerAdvice
clase para las diferentes excepciones y esto también está detectando el caso de que la base de datos se detiene en medio de la solicitud. Pero esto no es todo. También tengo una CorsFilter
extensión personalizada OncePerRequestFilter
y allí, cuando llamo, doFilter
obtengo el CannotGetJdbcConnectionException
y no será administrado por el @ControllerAdvice
. Leí varias cosas en línea que solo me confundieron más.
Entonces tengo muchas preguntas:
- ¿Necesito implementar un filtro personalizado? Encontré el
ExceptionTranslationFilter
pero esto solo manejaAuthenticationException
oAccessDeniedException
. - Pensé en implementar la mía propia
HandlerExceptionResolver
, pero esto me hizo dudar, no tengo ninguna excepción personalizada para administrar, debe haber una forma más obvia que esta. También intenté agregar un try / catch y llamar a una implementación deHandlerExceptionResolver
(debería ser lo suficientemente bueno, mi excepción no es nada especial) pero esto no devuelve nada en la respuesta, obtengo un estado 200 y un cuerpo vacío.
¿Hay alguna buena forma de lidiar con esto? Gracias