English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Al escribir programas JSP, los programadores pueden omitir algunos BUG, que pueden aparecer en cualquier lugar del programa. En el código JSP, hay varios tipos de excepciones comunes:
Esta sección presentará algunos métodos simples y elegantes para manejar excepciones y errores en tiempo de ejecución.
El objeto exception es un ejemplo de subclase de Throwable, que solo está disponible en la página de error. La siguiente tabla enumera algunos métodos importantes de la clase Throwable:
Número | Método&Descripción |
---|---|
1 | public String getMessage() Devuelve la información de la excepción. Esta información se inicializa en el constructor de Throwable |
2 | public Throwable getCause() Devuelve la causa de la excepción, que es un objeto de tipo Throwable |
3 | public String toString() Devuelve el nombre de la clase |
4 | public void printStackTrace() Escribe la pila de trazas de excepciones en System.err |
5 | public StackTraceElement [] getStackTrace() Devuelve la pila de trazas de excepciones en forma de un array de elementos de pila |
6 | public Throwable fillInStackTrace() Usa la pila de llamadas actual para llenar el objeto Throwable |
JSP ofrece opciones para especificar una página de error para cada página JSP. Siempre que la página lance una excepción, el contenedor JSP llama automáticamente a la página de error.
El siguiente ejemplo especifica una página de error para main.jsp. Se especifica una página de error utilizando la instrucción <%@page errorPage="XXXXX"%>.
<%@ page errorPage="ShowError.jsp" %> <html> <head> <title> Ejemplo de manejo de errores</title> </head> <body> <% // Lanza una excepción para invocar la página de error int x == 1; if (x == 1) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
Ahora, escribe el archivo ShowError.jsp de la siguiente manera:
<%@ page isErrorPage="true" %> <html> <head> <title>Show Error Page</title> </head> <body> <h1>Opps...</h1> <p>Disculpe, se produjo un error.</p> <p>Aquí está la traza de pila de excepciones: </p> <pre> <% exception.printStackTrace(response.getWriter()); %>
Notar que el archivo ShowError.jsp utiliza la instrucción <%@page isErrorPage="true"%>, que informa al compilador de JSP de que se debe generar una variable de ejemplo de excepción.
Ahora intenta acceder a la página main.jsp, que producirá el siguiente resultado:
java.lang.RuntimeException: Error condition!!! ...... Opps... Disculpe, se produjo un error. Aquí está la traza de pila de excepciones:
Se puede utilizar etiquetas JSTL para escribir la página de error ShowError.jsp. El código de este ejemplo es prácticamente igual al del ejemplo anterior, pero tiene una estructura mejor y puede 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>Trace de pila:</b></td> <td> <c:forEach var="trace" items="${pageContext.exception.stackTrace}"> <p>${trace}</p> </c:forEach> </td> </tr> </table> </body> </html>
Los resultados de la ejecución son los siguientes:
Si desea manejar excepciones en una página y realizar diferentes tratamientos para diferentes excepciones,则需要使用try…catch块。
El siguiente ejemplo muestra cómo usar el bloque try…catch, coloque este código en main.jsp:
<html> <head> <title>Ejemplo de Try...Catch</title> </head> <body> <% try{ int i = 1; i = i / 0; out.println("La respuesta es ", + i); } catch (Exception e){ out.println("Se produjo una excepción: ", + e.getMessage()); } %> </body> </html>
Intente acceder a main.jsp, que producirá el siguiente resultado:
Se produjo una excepción: / por zero