在這篇文章中,我將向你講解一個jsp(SUN企業級應用的首選)頁面例外(Exceptions)是怎樣拋出(Throw)並且怎樣捕捉這些例外,以便使你在jsp(SUN企業級應用的首選)設計中能得到更有利的信息.
首先,什麼是Exceptions?眾所周知Exceptions就是一個異常事件,它可能出現在程序的任何地方,比如:你試圖連接一個數據庫,但是這個數據庫已經關閉,這時就產生一個例外.
如何捕捉(throw)一個例外啦?我們可以用下面的表達式:
<%
try {
// Code which can throw can exception
} catch(Exception e) {
// Exception handler code here
}
%>
當然,還有另外的一種有用的方法:就是指定專用的例外處理頁面,當例外發生時便由它來處理.這就是我下面要講述的.
建立三個頁面:1.Form.html(簡單的年齡輸入筐)代碼如下:
<html><head><style>body, input { font-family:Tahoma; font-size:8pt; }</style></head><body><!-- HTML Form --><form action="FormHandler.jsp(SUN企業級應用的首選)" method="post">Enter your age ( in years ) : <input type="text" name="age" /> <input type="submit" value="Submit" /></form></body></html>
2:FormHandler.jsp(SUN企業級應用的首選)()(處理由Form.html傳來的age)代碼如下:
<%@ page errorPage="ExceptionHandler.jsp(SUN企業級應用的首選)" %><html><head><style>body, p { font-family:Tahoma; font-size:10pt; }</style></head><body><%-- Form Handler Code --%><%int age;age = Integer.parseInt(request.getParameter("age"));%><%-- Displaying User Age --%><p>Your age is : <%= age %> years.</p><p><a href="Form.html">Back</a>.</p></body></html>
請注意:(1)<%@ page errorPage="ExceptionHandler.jsp(SUN企業級應用的首選)" %>是指明了一個例外處理頁面,它必須在jsp(SUN企業級應用的首選)的第一行.(2)
<%int age;age = Integer.parseInt(request.getParameter("age"));%>是取得age(String類)並轉化為int(類).<p>Your age is : <%= age %> years.</p>
是輸出你剛才輸入的age,現在例外就可能發生了,如果 你輸入的不是數字,比如:zsa;這時String能轉化成int嗎?
3.ExceptionHandler.jsp(SUN企業級應用的首選)(處理例外)代碼如下:<%@ page isErrorPage="true" import="java.io.*" %><html><head><title>Exceptional Even Occurred!</title><style>body, p { font-family:Tahoma; font-size:10pt; padding-left:30; }pre { font-size:8pt; }</style></head><body><%-- Exception Handler --%><font color="red"><%= exception.toString() %><br></font><%out.println("<!--");StringWriter sw = new StringWriter();PrintWriter pw = new PrintWriter(sw);exception.printStackTrace(pw);out.print(sw);sw.close();pw.close();out.println("-->");%></body></html>注意:<%@ page isErrorPage="true" %>表明:當jsp(SUN企業級應用的首選)宣稱了一個errorPage時,應該聲明isErrorPage="true;
<%out.println("<!--");StringWriter sw = new StringWriter();PrintWriter pw = new PrintWriter(sw);exception.printStackTrace(pw);out.print(sw);sw.close();pw.close();out.println("-->");%>運用了PrintWriter和StringWrighter類,所以你不得不聲明:import java.io.* 在你jsp(SUN企業級應用的首選)程序中;即: