Détecter toutes les exceptions de mon projet J2EE avec Spring

Pour mettre en place un mécanisme de détection d’erreur au sein de vos projets web réalisés avec Spring , le framework propose en fait une solution toute faite vous permettant de détecter les erreurs et d’effectuer les opérations souhaitées.

Attention la méthode présenté ci-dessous ne fonctionne que dans le cas d’une utilisation de Spring avec le module Spring MVC et son système de vue. Elle permet une fois l’exception catchée de retourner une vue adapté à l’affichage de l’erreur.

Il faut pour cela déclarer un bean particulier et l’appeler exceptionResolver.

<bean id="exceptionResolver" class="mtt.web.interceptor.HandlerExceptionResolverMTT"/>

Il faut ensuite développer la classe demo.handler.ExceptionDemoResolver implémentant l’interface org.springframework.web.servlet.HandlerExceptionResolver et surcharger la méthode resolveException(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception)

 public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception exception) {
        Map<String, Object> modelError = new HashMap<String, Object>();
       //Traitement adapté à l'erreur

        modelError.put("erreur","Une erreur est survenue");

        logger.error("Exception Handler", exception);

        return new ModelAndView("vueSpecialErreur", "model", modelError);
    }

En revanche, cette solution ne permet pas de traiter les exceptions générés lors des traitements qui ne retourne pas de vue. C’est la cas par exemple si vous utilisez le framework DWR. Je vous invite à consulter l’article pour gérer le cas des Exceptions lors des appels Ajax avec DWR