新聞中心
當(dāng)編寫JSP程序的時候,程序員可能會遺漏一些BUG,這些BUG可能會出現(xiàn)在程序的任何地方。JSP代碼中通常有以下幾類異常:

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了淮安區(qū)免費(fèi)建站歡迎大家使用!
- 檢查型異常:檢查型異常就是一個典型的用戶錯誤或者一個程序員無法預(yù)見的錯誤。舉例來說,如果一個文件將要被打開,但是無法找到這個文件,則一個異常被拋出。這些異常不能再編譯期被簡單地忽略。
- 運(yùn)行時異常:一個運(yùn)行時異??赡芤呀?jīng)被程序員避免,這種異常在編譯期將會被忽略。
- 錯誤:這里沒有異常,但問題是它超出了用戶或者程序員的控制范圍。錯誤通常會在代碼中被忽略,您幾乎不能拿它怎么樣。舉例來或,棧溢出錯誤。這些錯誤都會在編譯期被忽略。
本節(jié)將會給出幾個簡單而優(yōu)雅的方式來處理運(yùn)行時異常和錯誤。
使用Exception對象
exception對象是Throwable子類的一個實(shí)例,只在錯誤頁面中可用。下表列出了Throwable類中一些重要的方法:
| 序號 | 方法&描述 |
|---|---|
| 1 | public String getMessage() 返回異常的信息。這個信息在Throwable構(gòu)造函數(shù)中被初始化 |
| 2 | public ThrowablegetCause() 返回引起異常的原因,類型為Throwable對象 |
| 3 | public String toString() 返回類名 |
| 4 | public void printStackTrace() 將異常棧軌跡輸出至System.err |
| 5 | public StackTraceElement [] getStackTrace() 以棧軌跡元素數(shù)組的形式返回異常棧軌跡 |
| 6 | public ThrowablefillInStackTrace() 使用當(dāng)前棧軌跡填充Throwable對象 |
JSP提供了可選項(xiàng)來為每個JSP頁面指定錯誤頁面。無論何時頁面拋出了異常,JSP容器都會自動地調(diào)用錯誤頁面。
接下來的例子為main.jsp指定了一個錯誤頁面。使用<%@page errorPage="XXXXX"%>指令指定一個錯誤頁面。
<%@ page errorPage="ShowError.jsp" %>
Error Handling Example
<% // Throw an exception to invoke the error page int x = 1; if (x == 1) { throw new RuntimeException("Error condition!!!"); } %>
現(xiàn)在,編寫ShowError.jsp文件如下:
<%@ page isErrorPage="true" %>
Show Error Page
Opps...
Sorry, an error occurred.
Here is the exception stack trace:
<% exception.printStackTrace(response.getWriter()); %>
注意到,ShowError.jsp文件使用了<%@page isErrorPage="true"%>指令,這個指令告訴JSP編譯器需要產(chǎn)生一個異常實(shí)例變量。
現(xiàn)在試著訪問main.jsp頁面,它將會產(chǎn)生如下結(jié)果:
java.lang.RuntimeException: Error condition!!!
......
Opps...
Sorry, an error occurred.
Here is the exception stack trace:
在錯誤頁面中使用JSTL標(biāo)簽
可以利用JSTL標(biāo)簽來編寫錯誤頁面ShowError.jsp。這個例子中的代碼與上例代碼的邏輯幾乎一樣,但是本例的代碼有更好的結(jié)構(gòu),并且能夠提供更多信息:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isErrorPage="true" %>
Show Error Page
Opps...
Error:
${pageContext.exception}
URI:
${pageContext.errorData.requestURI}
Status code:
${pageContext.errorData.statusCode}
Stack trace:
${trace}
運(yùn)行結(jié)果如下:
使用 try…catch塊
如果您想要將異常處理放在一個頁面中,并且對不同的異常進(jìn)行不同的處理,那么您就需要使用try…catch塊了。
接下來的這個例子顯示了如何使用try…catch塊,將這些代碼放在main.jsp中:
Try...Catch Example
<% try{ int i = 1; i = i / 0; out.println("The answer is " + i); } catch (Exception e){ out.println("An exception occurred: " + e.getMessage()); } %>
試著訪問main.jsp,它將會產(chǎn)生如下結(jié)果:
An exception occurred: / by zero
分享題目:創(chuàng)新互聯(lián)JSP教程:JSP異常處理
網(wǎng)頁URL:http://www.5511xx.com/article/cceiesd.html


咨詢
建站咨詢
