Latest web development tutorials

gestion des exceptions JSP

Lors de l'écriture application JSP, les programmeurs peuvent manquer certains BUG, ​​BUG peut apparaître n'importe où dans le programme. code JSP est généralement la catégories exception suivante:

  • exceptions cochés: vérifiées exceptions est une erreur de l'utilisateur typique ou un programmeur erreurs imprévues. Par exemple, si un fichier est d'être ouvert, mais ne peut pas trouver le fichier, une exception est levée. Ces anomalies ne peuvent plus compiler est simplement ignoré.
  • Exception d'exécution: un moteur d'exécution programmeurs d'exception ont pu être évité, cette anomalie sera ignorée au moment de la compilation.
  • Erreur: Il ne fait pas exception, mais le problème est qu'il est hors du contrôle de l'utilisateur ou le programmeur. Erreur est souvent négligée dans le code, vous pouvez à peine le prendre comment. A titre d'exemple, ou d'une erreur de débordement de pile. Ces erreurs seront ignorées au moment de la compilation.

Cette section donnera un moyen simple et élégant quelques-uns pour gérer les exceptions et les erreurs runtime.


Objets utilisation d'exception

objet d'exception est une instance de la sous-classe Throwable, disponible uniquement dans la page d'erreur. Le tableau ci-dessous énumère quelques-uns de la classe Throwable de façon importante:

Non . Méthode & Description
1 public String getMessage ()

Renvoie l'exception. Cette information est initialisée dans le Throwable constructeur
2 ThrowablegetCause publique ()

Renvoie la cause de l'exception, l'objet de type Throwable
3 public String toString ()

Retourne le nom de la classe
4 printStackTrace public void ()

La sortie pile d'exception trace pour System.err
5 publique StackTraceElement [] getStackTrace ()

Sous la forme d'un élément de trace de pile de la matrice renvoie une trace de pile d'exception
6 ThrowablefillInStackTrace publique ()

La trace de la pile actuelle de remplissage objet Throwable

JSP offre la possibilité de spécifier des pages d'erreur pour chaque page JSP. Chaque fois que la page renvoie une exception, le conteneur JSP appelle automatiquement la page d'erreur.

Les exemples main.jsp suivant spécifie une page d'erreur. Utilisez <% @ Page errorPage = "XXXXX"%> directive spécifie une page d'erreur.

<%@ page errorPage="ShowError.jsp" %>

<html>
<head>
   <title>Error Handling Example</title>
</head>
<body>
<%
   // Throw an exception to invoke the error page
   int x = 1;
   if (x == 1)
   {
      throw new RuntimeException("Error condition!!!");
   }
%>
</body>
</html>

Maintenant, écrivez ShowError.jsp documents suivants:

<%@ page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<p>Sorry, an error occurred.</p>
<p>Here is the exception stack trace: </p>
<pre>
<% exception.printStackTrace(response.getWriter()); %>

Notant, les utilisations de fichiers ShowError.jsp <% @ Page isErrorPage = "true"%> directive, qui indique au compilateur JSP doit générer une variable d'instance d'exception.

Maintenant, essayez d'accéder à la page de main.jsp, il va produire les résultats suivants:

java.lang.RuntimeException: Error condition!!!
......

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

Utilisez les balises JSTL en page d'erreur

balises JSTL peuvent être utilisés pour écrire une page d'erreur ShowError.jsp. Ce code d'exemple et logique dans l'exemple de code est presque le même, mais dans ce cas, le code a une meilleure structure, et peut fournir plus d'informations:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<table width="100%" border="1">
<tr valign="top">
<td width="40%"><b>Error:</b></td>
<td>${pageContext.exception}</td>
</tr>
<tr valign="top">
<td><b>URI:</b></td>
<td>${pageContext.errorData.requestURI}</td>
</tr>
<tr valign="top">
<td><b>Status code:</b></td>
<td>${pageContext.errorData.statusCode}</td>
</tr>
<tr valign="top">
<td><b>Stack trace:</b></td>
<td>
<c:forEach var="trace" 
         items="${pageContext.exception.stackTrace}">
<p>${trace}</p>
</c:forEach>
</td>
</tr>
</table>
</body>
</html>

Les résultats sont les suivants:

jsp-exeception-1


Utilisez try ... catch block

Si vous voulez mettre une gestion des exceptions de page, et pour différentes exceptions sont traitées différemment, alors vous devez utiliser un bloc try ... catch.

L'exemple suivant montre comment utiliser le bloc try ... catch, le code sera placé dans main.jsp:

<html>
<head>
   <title>Try...Catch Example</title>
</head>
<body>
<%
   try{
      int i = 1;
      i = i / 0;
      out.println("The answer is " + i);
   }
   catch (Exception e){
      out.println("An exception occurred: " + e.getMessage());
   }
%>
</body>
</html>

Essayez de visiter main.jsp, il va produire les résultats suivants:

An exception occurred: / by zero