Latest web development tutorials

manejo de excepciones JSP

Al escribir aplicaciones JSP, los programadores pueden pasar por alto algunos fallo, el fallo puede aparecer en cualquier parte del programa. código JSP es por lo general las siguientes categorías excepción:

  • Las excepciones comprobadas: comprueban excepciones es un error de usuario típico o un programador errores imprevistos. Por ejemplo, si un archivo se va a abrir, pero no puede encontrar el archivo, a continuación, se produce una excepción. Estas anomalías no pueden compilar simplemente se ignora.
  • excepción de tiempo de ejecución: un tiempo de ejecución de excepción programadores pueden haber sido evitado, esta anomalía se tendrá en cuenta en tiempo de compilación.
  • Error: No hay ninguna excepción, pero el problema es que está más allá del control del usuario o programador. De error a menudo se pasa por alto en el código, casi no se puede tomar la forma. A modo de ejemplo, o un error de desbordamiento de pila. Estos errores serán ignorados en tiempo de compilación.

En esta sección se dará una manera simple y elegante pocos para controlar las excepciones de tiempo de ejecución y errores.


El uso de excepción Objetos

objeto de excepción es una instancia de la subclase de Throwable, disponible sólo en la página de error. La siguiente tabla muestra algunos de la clase Throwable en aspectos importantes:

No. Método y Descripción
1 Cadena getMessage pública ()

Devuelve la excepción. Esta información se ha inicializado en el constructor de la clase Throwable
2 ThrowablegetCause público ()

Devuelve la causa de la excepción, el objeto de tipo Throwable
3 public String toString ()

Devuelve el nombre de la clase
4 printStackTrace public void ()

El resultado de seguimiento de pila de excepción a System.err
5 público StackTraceElement [] getStackTrace ()

En forma de un elemento de seguimiento de la pila de la matriz devuelve un seguimiento de pila de excepción
6 ThrowablefillInStackTrace público ()

El seguimiento de la pila actual llenar objeto Throwable

JSP proporciona la opción de especificar las páginas de error para cada página JSP. Cada vez que la página se produce una excepción, contenedor JSP llamará automáticamente a la página de error.

Los siguientes ejemplos main.jsp especifica una página de error. Use <% @ page ErrorPage = "XXXXX"%> directiva especifica una página de error.

<%@ 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>

Ahora, escriba ShowError.jsp siguientes documentos:

<%@ 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()); %>

Observando, ShowError.jsp usos de archivos <% @ página isErrorPage = "true"%> directiva, que le dice al compilador JSP necesita para generar una variable de instancia es una excepción.

Ahora intenta acceder a la página de main.jsp, producirá los siguientes resultados:

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

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

Utilice las etiquetas JSTL en la página de error

etiquetas JSTL se pueden utilizar para escribir la página de error ShowError.jsp. Este código de ejemplo y la lógica en el código de ejemplo, es casi lo mismo, pero en este caso el código tiene una mejor estructura, y pueden proporcionar más información:

<%@ 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>

Los resultados son como sigue:

jsp-exeception-1


Utilice bloque try ... catch

Si usted quiere poner una página de manejo de excepciones, y para diferentes excepciones se manejan de manera diferente, entonces es necesario utilizar un bloque try ... catch.

El siguiente ejemplo muestra cómo utilizar el bloque try ... catch, el código será colocado en 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>

Trate de visitar main.jsp, producirá los siguientes resultados:

An exception occurred: / by zero