jsp頁面的例外處理
最後更新:2017-02-28
來源:互聯網
上載者:User
js|頁面 在這篇文章中,我將向你講解一個jsp頁面例外(Exceptions)是怎樣拋出(Throw)並且怎樣捕捉這些例外,以便使你在jsp設計中能得到更有利的資訊.
首先,什麼是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" method="post">
Enter your age ( in years ) :
<input type="text" name="age" />
<input type="submit" value="Submit" />
</form>
</body>
</html>2:FormHandler.jsp()(處理由Form.html傳來的age)代碼如下:
<%@ page errorPage="ExceptionHandler.jsp" %>
<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" %>是指明了一個例外處理頁面,它必須在jsp的第一行.(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(處理例外)代碼如下:<%@ 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宣稱了一個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程式中;即:<%@ page isErrorPage="true" import="java.io.*" %>好了:開始示範:在ie中輸入http://localhost:8080/myapp/Form.html 斷行符號!當然你先要啟動tomcat! 看見了嗎?在輸入筐中入任何一個數字:24等:結果是:Your age is : 24 years再試一下:輸入:zsa.是什麼結果啦??java.lang.NumberFormatException: For input string: "zsa";明白了吧!!!!