黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

JSP教程
JSP高級教程

JSP異常處理

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

● 檢查型異常:檢查型異常就是一個典型的用戶錯誤或者一個程序員無法預見的錯誤。舉例來說,如果一個文件將要被打開,但是無法找到這個文件,則一個異常被拋出。這些異常不能再編譯期被簡單地忽略。

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

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

本節(jié)將會給出幾個簡單而優(yōu)雅的方式來處理運行時異常和錯誤。

使用Exception對象

exception對象是Throwable子類的一個實例,只在錯誤頁面中可用。下表列出了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()

使用當前棧軌跡填充Throwable對象

JSP提供了可選項來為每個JSP頁面指定錯誤頁面。無論何時頁面拋出了異常,JSP容器都會自動地調(diào)用錯誤頁面。

接下來的例子為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>

現(xiàn)在,編寫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文件使用了指令,這個指令告訴JSP編譯器需要產(chǎn)生一個異常實例變量。

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

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

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

在錯誤頁面中使用JSTL標簽

可以利用JSTL標簽來編寫錯誤頁面ShowError.jsp。這個例子中的代碼與上例代碼的邏輯幾乎一樣,但是本例的代碼有更好的結(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>

運行結(jié)果如下:

使用 try…catch塊

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

接下來的這個例子顯示了如何使用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>

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

An exception occurred: / by zero 

 

全部教程
主站蜘蛛池模板: 欧美影视一区二区三区 | 天天噜天天干 | 羞羞网站免费观看 | 黄色小视频免费网站 | 黄色影院在线观看 | 青青草综合在线 | 一区在线观看 | 动漫成年美女黄漫网站在线看 | 看黄网站在线观看 | 怡红院免费的全部视频 | 狠狠躁夜夜躁人人躁婷婷视频 | 成年午夜 | 日批视频在线免费观看 | 浪潮a二三区 | 午夜美女影院 | 国产网站在线看 | a级黄色毛片 | 国产欧美一区视频在线观看 | 免费观看成年的网站 | 国产成人精品福利网站在线观看 | 看日本黄大片在线观看 | 国产精品久久一区 | 国产精品日本一区二区不卡视频 | 大伊香蕉在线精品视频人碰人 | 亚洲一级香蕉视频 | 一级片在线观看视频 | 欧美日韩一区二区三区高清不卡 | 老司机精品免费视频 | 午夜伦理片在线观看 | 免费一级毛片在线视频观看 | 男女做羞羞的视频 | a视频免费在线观看 | 狠狠狠干 | 日韩三级一区二区三区 | 日韩黄漫啪啪免费动漫 | 91大片淫黄大片.在线天堂 | 色站网| 日韩欧美在线第一页 | 最近的2019免费中文字幕 | 亚洲日本一区二区三区高清在线 | 99久在线|