日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)JSP教程:JSP異常處理

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

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了淮安區(qū)免費(fèi)建站歡迎大家使用!

  • 檢查型異常:檢查型異常就是一個(gè)典型的用戶錯(cuò)誤或者一個(gè)程序員無法預(yù)見的錯(cuò)誤。舉例來說,如果一個(gè)文件將要被打開,但是無法找到這個(gè)文件,則一個(gè)異常被拋出。這些異常不能再編譯期被簡單地忽略。
  • 運(yùn)行時(shí)異常:一個(gè)運(yùn)行時(shí)異??赡芤呀?jīng)被程序員避免,這種異常在編譯期將會(huì)被忽略。
  • 錯(cuò)誤:這里沒有異常,但問題是它超出了用戶或者程序員的控制范圍。錯(cuò)誤通常會(huì)在代碼中被忽略,您幾乎不能拿它怎么樣。舉例來或,棧溢出錯(cuò)誤。這些錯(cuò)誤都會(huì)在編譯期被忽略。

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

使用Exception對(duì)象

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

序號(hào) 方法&描述
1 public String getMessage()

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

2 public ThrowablegetCause()

返回引起異常的原因,類型為Throwable對(duì)象

3 public String toString()

返回類名

4 public void printStackTrace()

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

5 public StackTraceElement [] getStackTrace()

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

6 public ThrowablefillInStackTrace()

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

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

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

<%@ page errorPage="ShowError.jsp" %>



   Error Handling Example


<%    // Throw an exception to invoke the error page    int x = 1;    if (x == 1)    {       throw new RuntimeException("Error condition!!!");    } %>


現(xiàn)在,編寫ShowError.jsp文件如下:

<%@ page isErrorPage="true" %>


Show Error Page


Opps...

Sorry, an error occurred.

Here is the exception stack trace:

<% exception.printStackTrace(response.getWriter()); %>

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

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

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

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

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

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

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isErrorPage="true" %>


Show Error Page


Opps...

Error: ${pageContext.exception}
URI: ${pageContext.errorData.requestURI}
Status code: ${pageContext.errorData.statusCode}
Stack trace:

${trace}

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

使用 try…catch塊

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

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



   Try...Catch Example


<%    try{       int i = 1;       i = i / 0;       out.println("The answer is " + i);    }    catch (Exception e){       out.println("An exception occurred: " + e.getMessage());    } %>


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

An exception occurred: / by zero 

本文名稱:創(chuàng)新互聯(lián)JSP教程:JSP異常處理
鏈接分享:http://m.5511xx.com/article/cceiesd.html