Je souhaite utiliser un moyen générique pour gérer les codes d'erreur 5xx, disons spécifiquement le cas où la base de données est en panne dans toute mon application Spring. Je veux un joli json d'erreur au lieu d'une trace de pile.
Pour les contrôleurs, j'ai une @ControllerAdviceclasse pour les différentes exceptions et cela attrape également le cas où la base de données s'arrête au milieu de la demande. Mais ce n'est pas tout. Il se trouve que j'ai aussi une CorsFilterextension personnalisée OncePerRequestFilteret là, lorsque j'appelle, doFilterje reçois le CannotGetJdbcConnectionExceptionet il ne sera pas géré par le @ControllerAdvice. J'ai lu plusieurs choses en ligne qui m'ont rendu encore plus confus.
J'ai donc beaucoup de questions:
- Dois-je implémenter un filtre personnalisé? J'ai trouvé le
ExceptionTranslationFiltermais cela ne gère queAuthenticationExceptionouAccessDeniedException. - J'ai pensé à implémenter la mienne
HandlerExceptionResolver, mais cela m'a fait douter, je n'ai pas d'exception personnalisée à gérer, il doit y avoir un moyen plus évident que celui-ci. J'ai également essayé d'ajouter un try / catch et d'appeler une implémentation duHandlerExceptionResolver(devrait être assez bon, mon exception n'a rien de spécial) mais cela ne renvoie rien dans la réponse, j'obtiens un statut 200 et un corps vide.
Y a-t-il un bon moyen de gérer cela? Merci