1

J'utilise actuellement un framework MVC très simple, Bear Bibeault's Front Man, qui, pour ceux qui ne me sont pas familiers, est assez similaire à Spring MVC (en concept au moins). L'un des problèmes que j'ai est de savoir comment gérer correctement les exceptions.Comment gérez-vous/consignez-vous les erreurs dans une application Web Java MVC?

Je suis en train de faire quelque chose comme ça,

try { 
    //do something 
}catch (Exception ex) { 
    logger.error("Logging error", ex); 
    Map model = new HashMap(); 
    model.put("error", ex.getLocalizedMessage()); 
    cc.setScopedVariable("model", model); 
    cc.forwardToView(ERROR_VIEW); 
} 

Essentiellement, je log l'exception et puis vers l'avant à une page vue d'erreur. Cependant, cela me semble ne pas être la bonne façon de le faire. Il en résulte beaucoup de code standard qui n'est pas très SEC.

Quelle est la meilleure façon de gérer/consigner les exceptions dans une application Web?

Répondre

5

Vous pouvez effectuer toutes vos consignation à l'intérieur d'un error JSP file.

Ajoutez ceci à votre fichier web.xml.

<error-page> 
<exception-type>java.lang.Throwable</exception-type> 
<location>/error.jsp</location> 
</error-page> 

Dans votre fichier jsp ajouter

<%@page isErrorPage="true" %> 

Ensuite, vous pouvez placer votre intérieur <% %> et l'enregistrement affiche l'erreur en même temps. Toute votre logique de journalisation se trouverait au même endroit et votre code commencerait à être plus propre. Au lieu d'utiliser un scriptlet dans votre fichier JSP, vous pouvez placer le point d'emplacement sur une servlet. La servlet peut gérer tous vos traitements puis les transférer vers la page JSP.

Vous pouvez également utiliser cette technique pour différentes exceptions, afin de pouvoir traiter les exceptions différemment.

+0

Est-ce que cela nécessite l'utilisation de scriplets dans la page JSP d'erreur? J'essaie de m'éloigner du code dans la JSP. –

+0

JSPs, la vue, ne doit pas contenir de code de gestion des erreurs. Les erreurs doivent être gérées dans leur segment approprié et le message convivial doit être généré. – doomspork

+1

Vous pouvez également utiliser une servlet au lieu d'une page JSP. – scheibk

1

Il existe différents types d'exceptions, vous devez donc d'abord identifier comment vous voulez les montrer à l'utilisateur. Les transmettre à une page pour afficher une erreur n'est peut-être pas le meilleur choix pour toutes les erreurs qu'ils rencontrent. Gardez à l'esprit que l'affichage d'une erreur sans contexte peut être déroutant pour certains utilisateurs.

Une façon de le gérer serait de consigner toutes les erreurs sans critique et d'avoir un emplacement sur le site Web où un utilisateur pourrait accéder et les examiner. (J'ai travaillé sur un projet où nous avions quelque chose de similaire: l'utilisateur pouvait revoir les avertissements et les erreurs qui n'empêcheraient pas l'application de continuer.)

Vous pouvez les retourner à la page dans laquelle l'erreur s'est produite et les remplir un message d'erreur là. AJAX/Comet peut être utilisé pour afficher des erreurs en temps réel à l'utilisateur sans les enlever de la page où l'erreur s'est produite.

Questions connexes