Méthode préférée pour gérer les exceptions Java dans ServletContextListener

Pour ce qui est du cycle de vie des servlets, que recommandez-vous à votre personnel en réponse à une exception …

Par exemple,

public class Foo implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent event) { try { // something nasty } catch (Exception e) { throw new RuntimeException(e); } } @Override public void contextDestroyed(ServletContextEvent event) { try { // something nasty } catch (Exception e) { throw new RuntimeException(e); } } 

Je ne suis pas tout à fait sûr de ce qui gérera l’exception d’exécution ci-dessus. Je pars de l’idée que si des exceptions sont générées ici, elles sont suffisamment sérieuses pour casser complètement le système, de sorte qu’une exception d’exécution (non gérée) est acceptable.

Je suppose que je demande ce qui gère les exceptions non contrôlées des écouteurs de contexte de servlet?

Lorsque vous interceptez une exception, vous pouvez envisager de définir un atsortingbut ServletContext pour indiquer qu’une erreur a été rencontrée. Ainsi, si le conteneur n’a pas désactivé l’application, vous pouvez faire en sorte que Filter s et / ou Servlet inspectent l’atsortingbut ServletContext et prennent les mesures appropriées, telles que l’affichage d’une page d’erreur.

Il semble que ServletContentListener ne soit pas conçu pour pouvoir exercer un contrôle sur le cycle de vie (sinon, il serait autorisé de lancer une exception ServletException).

En tant que tel, je ne compterais pas sur une exception RuntimeException pour faire quoi que ce soit d’utile. En regardant d’ autres threads ici , il semble être enregistré et ignoré sur certains serveurs d’applications.

S’il est essentiel que l’application ne démarre pas lorsque votre code échoue, vous devez déplacer ce code dans la section d’initialisation d’un servlet.

Il est bon d’afficher une page du type “Erreur technique, désolé” et de ne pas afficher la stack avec le message d’erreur. Connectez-vous simplement et transférez l’utilisateur à la page d’erreur.

Nous pouvons l’exception à travers object.printStackTrace (); ou en appelant l’exception via out.print (“Exception is” + ex);