大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

JSP教程
JSP高級(jí)教程

JSP異常處理

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

● 檢查型異常:檢查型異常就是一個(gè)典型的用戶錯(cuò)誤或者一個(gè)程序員無(wú)法預(yù)見(jiàn)的錯(cuò)誤。舉例來(lái)說(shuō),如果一個(gè)文件將要被打開(kāi),但是無(wú)法找到這個(gè)文件,則一個(gè)異常被拋出。這些異常不能再編譯期被簡(jiǎn)單地忽略。

● 運(yùn)行時(shí)異常:一個(gè)運(yùn)行時(shí)異常可能已經(jīng)被程序員避免,這種異常在編譯期將會(huì)被忽略。

● 錯(cuò)誤:這里沒(méi)有異常,但問(wèn)題是它超出了用戶或者程序員的控制范圍。錯(cuò)誤通常會(huì)在代碼中被忽略,您幾乎不能拿它怎么樣。舉例來(lái)或,棧溢出錯(cuò)誤。這些錯(cuò)誤都會(huì)在編譯期被忽略。

本節(jié)將會(huì)給出幾個(gè)簡(jiǎn)單而優(yōu)雅的方式來(lái)處理運(yùn)行時(shí)異常和錯(cuò)誤。

使用Exception對(duì)象

exception對(duì)象是Throwable子類(lèi)的一個(gè)實(shí)例,只在錯(cuò)誤頁(yè)面中可用。下表列出了Throwable類(lèi)中一些重要的方法:

序號(hào)

方法&描述

1

public String getMessage()

返回異常的信息。這個(gè)信息在Throwable構(gòu)造函數(shù)中被初始化

2

public ThrowablegetCause()

返回引起異常的原因,類(lèi)型為T(mén)hrowable對(duì)象

3

public String toString()

返回類(lèi)名

4

public void printStackTrace()

將異常棧軌跡輸出至System.err

5

public StackTraceElement [] getStackTrace()

以棧軌跡元素?cái)?shù)組的形式返回異常棧軌跡

6

public ThrowablefillInStackTrace()

使用當(dāng)前棧軌跡填充Throwable對(duì)象

JSP提供了可選項(xiàng)來(lái)為每個(gè)JSP頁(yè)面指定錯(cuò)誤頁(yè)面。無(wú)論何時(shí)頁(yè)面拋出了異常,JSP容器都會(huì)自動(dòng)地調(diào)用錯(cuò)誤頁(yè)面。

接下來(lái)的例子為main.jsp指定了一個(gè)錯(cuò)誤頁(yè)面。使用<%@page errorPage="XXXXX"%>指令指定一個(gè)錯(cuò)誤頁(yè)面。

<%@ 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>

現(xiàn)在,編寫(xiě)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()); %>

注意到,ShowError.jsp文件使用了指令,這個(gè)指令告訴JSP編譯器需要產(chǎn)生一個(gè)異常實(shí)例變量。

現(xiàn)在試著訪問(wèn)main.jsp頁(yè)面,它將會(huì)產(chǎn)生如下結(jié)果:

java.lang.RuntimeException: Error condition!!!
......

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

在錯(cuò)誤頁(yè)面中使用JSTL標(biāo)簽

可以利用JSTL標(biāo)簽來(lái)編寫(xiě)錯(cuò)誤頁(yè)面ShowError.jsp。這個(gè)例子中的代碼與上例代碼的邏輯幾乎一樣,但是本例的代碼有更好的結(jié)構(gòu),并且能夠提供更多信息:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<table width="100%" border="1">
<tr valign="top">
<td width="40%"><b>Error:</b></td>
<td>${pageContext.exception}</td>
</tr>
<tr valign="top">
<td><b>URI:</b></td>
<td>${pageContext.errorData.requestURI}</td>
</tr>
<tr valign="top">
<td><b>Status code:</b></td>
<td>${pageContext.errorData.statusCode}</td>
</tr>
<tr valign="top">
<td><b>Stack trace:</b></td>
<td>
<c:forEach var="trace"           items="${pageContext.exception.stackTrace}">
<p>${trace}</p>
</c:forEach>
</td>
</tr>
</table>
</body>
</html>

運(yùn)行結(jié)果如下:

使用 try…catch塊

如果您想要將異常處理放在一個(gè)頁(yè)面中,并且對(duì)不同的異常進(jìn)行不同的處理,那么您就需要使用try…catch塊了。

接下來(lái)的這個(gè)例子顯示了如何使用try…catch塊,將這些代碼放在main.jsp中:

<html>
<head>
   <title>Try...Catch Example</title>
</head>
<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>

試著訪問(wèn)main.jsp,它將會(huì)產(chǎn)生如下結(jié)果:

An exception occurred: / by zero 

 

全部教程
主站蜘蛛池模板: 精产国品一二二区视 | 欧美日韩中文国产一区 | 久久aa毛片免费播放嗯啊 | 成人在线视频观看 | 四虎精品国产一区二区三区 | 一级午夜a毛片免费视频 | 天天做人人爱夜夜爽2020毛片 | 91亚洲国产 | 国产一国产一级毛片视频 | 鸥美毛片 | 亚洲欧美中文字幕在线网站 | 视频在线观看入口一二三2021 | 亚洲福利视频在线 | 亚洲小视频在线 | 爱搞逼综合 | 午夜性色吃奶添下面69影院 | 国产成人18黄网站麻豆 | 国内精品久久久久久影院8f | 中国jizz18免费| 久热草| 亚洲欧美香蕉在线日韩精选 | 一级欧美毛片成人 | 国产美女做爰免费视 | 亚洲欧美日韩在线一区二区三区 | 日本高清精品 | 四虎影库网址 | 免费 高清 日本1在线观看 | 欧美精品综合 | 久久在线一区 | 国产精品亚洲片在线牛牛影视 | 奇米网奇米色 | www.黄色在线观看 | 亚洲精品123区在线观看 | 欧美成人免费一区在线播放 | 在线观看免费亚洲 | 免费在线观看黄色小视频 | 日本一级片在线观看 | 亚洲国产欧洲 | 中文字幕免费在线看线人动作大片 | 再猛点深使劲爽日本免费视频 | 91粉色视频在线观看 |