阅读(2579)
赞(19)
JSP 处理异常
2017-01-09 19:02:38 更新
JSP教程 - JSP处理异常
要在不使用错误处理页面的情况下处理同一页面中的异常,请使用try....catch块。
<html> <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>
在JSP中,我们可以为每个JSP页面指定一个错误页面来处理异常。每当页面抛出异常时,JSP容器自动返回错误页面。
以下代码显示如何使用<%@ page errorPage =“xxx”%>指令指定main.jsp的错误页面。
<%@ page errorPage="ShowError.jsp" %> <html> <body> <% int x = 1; if (x == 1) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
例子
下面的代码是ShowError.jsp,它包含指令<%@ page isErrorPage =“true”%>。此伪指令生成异常实例变量。
<%@ page isErrorPage="true" %> <html> <body> <p>Here is the exception stack trace: </p> <pre> <% exception.printStackTrace(response.getWriter()); %> </pre> </body> </html>
例2
以下代码显示了如何使用JSP表达式语言输出异常信息。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@page isErrorPage="true" %> <html> <body> <b>Error:</b>${pageContext.exception} <b>URI:</b>${pageContext.errorData.requestURI} <b>Status code:</b>${pageContext.errorData.statusCode} <c:forEach var="trace" items="${pageContext.exception.stackTrace}"> <p>${trace}</p> </c:forEach> </body> </html>