关于JSP异常的处理

jsp中错误处理页面-isErrorPage="true"

举例说明:mustBeError.jsp

1 <%@ page contentType="text/html; charset=gb2312" 
2 language="java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*" errorPage="error.jsp" %>
3 <%
4   //这个页面一定会出错。
5   int i=0;
6   int j=1;
7   out.println(j/i);
8 %>

在此中通过errorPage="error.jsp"来指定出错时错误处理页面

error.jsp

 1  <%@ page contentType="text/html; charset=gb2312" language="java" isErrorPage="true" import="java.io.*"%>
 2  <html>
 3  <head>
 4    <title>出错了!</title>
 5    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 6  </head>
 7  <body>
 8    出错了!<br>
 9    发生了以下的错误:
10    <br><hr>
11  <font color=red><hr>
12    getMessage():<br>
13    <%=exception.getMessage()%><br><hr>
14    getLocalizedMessage():<br>
15    <%=exception.getLocalizedMessage()%><br><hr>
16    PrintStatckTrace():<br>
17    <%
18    StringWriter sw=new StringWriter();
19    PrintWriter pw=new PrintWriter(sw);
20    exception.printStackTrace(pw);
21    out.println(sw);
22    %><br>
23   </font>
24  </body> 

在web.xml中声明异常和错误页面

 1 例如:
 2 <?xml version="1.0" encoding="ISO-8859-1"?>
 3 
 4 <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 6 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
 7 version="2.4">
 8 <error-page>
 9 <error-code>404</error-code>
10 <location>/pageNotFound.html</location>
11 </error-page>
12 
13 <error-page>
14 <exception-type>java.lang.NumberFormatException</exception-type>
15 <location>/NumberFormatException.html</location>
16 </error-page> 
17 
18 </web-app> 

说明:指定错误代码为404是,调用/pageNotFound.html
也可以指定错误类型如:java.lang.NumberFormatException,出现此错误类型是调用/NumberFormatException.html

 

在error.jsp中,首先在page指令中指定:

isErrorPage="true"

这是非常关键的地方,只有这样指定,这个页面才能进行错误处理,才能使用exception对象。

exception对象有几个非常重要的方法,用于获得出错的信息,这些方法如下:

 

? <%=exception.getMessage()%>
? <%=exception.getLocalizedMessage()%>
? <% exception.printStackTrace(PrintWriter);%>

最后一个方法用于打印错误堆栈。如果需要在错误页面以外使用这个exception对象,那么可以这样把exception对象保存起来:

session.setAttribute("myError",exception);

在另一个页面使用:

Exception exception=( Exception )session.getAttribute("myError");

把这个异常对象引入进来。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。