39 votes

Comment afficher une page d'erreur conviviale dans le navigateur lorsque l'exception d'exécution est levée par le servlet?

Je développe une application web avec JSF. Je l'ai testé comme je le pouvais, mais de temps en temps, des exceptions d'exécution sont levées.

Alors, comment rediriger l'utilisateur vers une page d'erreur spéciale chaque fois qu'une exception est levée (au lieu d'afficher 500 erreur avec les journaux tomcat complets)?

59voto

BalusC Points 498232

Il suffit de déclarer un <error-page> en web.xml où vous pouvez spécifier la page qui doit être affiché sur un certain Throwable (ou de l'un quelconque de ses sous-classes) ou un code d'état HTTP. E. g.

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

qui affiche la page d'erreur sur une sous-classe de l' java.lang.Exception, mais donc pas java.lang.Throwable ou java.lang.Error. De cette façon, vous pouvez avoir votre propre page d'erreur pour n'importe quel type d' Throwable. E. g. java.sql.SQLException, java.io.IOException et ainsi de suite.

Ou,

<error-page>
    <error-code>500</error-code>
    <location>/error.jsp</location>
</error-page>

qui affiche la page d'erreur sur une erreur HTTP 500, mais vous pouvez également spécifier un autre pour 404 (Page Non Trouvée), 403 (Interdit), et cætera.

Si vous déclarez <%@page isErrorPage="true" %> en haut de error.jsp, alors vous avez accès à la jetée Exception (et donc aussi de l'ensemble de ses getters) en ${exception} dans EL.

<p>Message: ${exception.message}</p>

Voir aussi le Java EE 5 tutoriel sur le sujet.

10voto

Pascal Thivent Points 295221

Dans votre web.xml:

 <error-page>
  <error-code>500</error-code>
  <location>/errorpages/500.jsp</location>
</error-page>
 

Vous pouvez également intercepter des exceptions spécifiques ou des exceptions qui s'étendent Throwable :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X