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 @ControllerAdviceclase 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 CorsFilterextensión personalizada OncePerRequestFiltery allí, cuando llamo, doFilterobtengo el CannotGetJdbcConnectionExceptiony 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
ExceptionTranslationFilterpero esto solo manejaAuthenticationExceptionoAccessDeniedException. - 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