JSP 異常處理
當編寫JSP程序的時候,程序員可能會遺漏一些BUG,這些BUG可能會出現在程序的任何地方。 JSP代碼中通常有以下幾類異常:
- 檢查型異常:檢查型異常就是一個典型的用戶錯誤或者一個程序員無法預見的錯誤。 舉例來說,如果一個文件將要被打開,但是無法找到這個文件,則一個異常被拋出。 這些異常不能再編譯期被簡單地忽略。
- 運行時異常:一個運行時異常可能已經被程序員避免,這種異常在編譯期將會被忽略。
- 錯誤:這裡沒有異常,但問題是它超出了用戶或者程序員的控制範圍。 錯誤通常會在代碼中被忽略,您幾乎不能拿它怎麼樣。 舉例來或,棧溢出錯誤。 這些錯誤都會在編譯期被忽略。
本節將會給出幾個簡單而優雅的方式來處理運行時異常和錯誤。
使用Exception對象
exception對像是Throwable子類的一個實例,只在錯誤頁面中可用。 下表列出了Throwable類中一些重要的方法:
序號 | 方法 & 描述 |
---|---|
1 | public String getMessage() 返回異常的信息。 這個信息在Throwable構造函數中被初始化 |
2 | public ThrowablegetCause() 返回引起異常的原因,類型為Throwable對象 |
3 | public String toString() 返回類名 |
4 | public void printStackTrace() 將異常棧軌跡輸出至System.err |
5 | public StackTraceElement [] getStackTrace() 以棧軌跡元素數組的形式返回異常棧軌跡 |
6 | public ThrowablefillInStackTrace() 使用當前棧軌跡填充Throwable對象 |
JSP提供了可選項來為每個JSP頁面指定錯誤頁面。 無論何時頁面拋出了異常,JSP容器都會自動地調用錯誤頁面。
接下來的例子為main.jsp指定了一個錯誤頁面。 使用<%@page errorPage="XXXXX"%>指令指定一個錯誤頁面。
<%@ page errorPage="ShowError.jsp" %> <html> <head> <title>Error Handling Example</title> </head> <body> <% // Throw an exception to invoke the error page int x = 1; if (x == 1) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
現在,編寫ShowError.jsp文件如下:
<%@ page isErrorPage="true" %> <html> <head> <title>Show Error Page</title> </head> <body> <h1>Opps...</h1> <p>Sorry, an error occurred.</p> <p>Here is the exception stack trace: </p> <pre> <% exception.printStackTrace(response.getWriter()); %>