要在不使用錯(cuò)誤處理頁面的情況下處理同一頁面中的異常,請使用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中,我們可以為每個(gè)JSP頁面指定一個(gè)錯(cuò)誤頁面來處理異常。每當(dāng)頁面拋出異常時(shí),JSP容器自動(dòng)返回錯(cuò)誤頁面。
以下代碼顯示如何使用<%@ page errorPage =“xxx”%>指令指定main.jsp的錯(cuò)誤頁面。
<%@ page errorPage="ShowError.jsp" %> <html> <body> <% int x = 1; if (x == 1) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
下面的代碼是ShowError.jsp,它包含指令<%@ page isErrorPage =“true”%>。此偽指令生成異常實(shí)例變量。
<%@ page isErrorPage="true" %> <html> <body> <p>Here is the exception stack trace: </p> <pre> <% exception.printStackTrace(response.getWriter()); %> </pre> </body> </html>
以下代碼顯示了如何使用JSP表達(dá)式語言輸出異常信息。
<%@ 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>
更多建議: