Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java異常處理_第1頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java異常處理_第2頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java異常處理_第3頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java異常處理_第4頁(yè)
Java程序設(shè)計(jì)項(xiàng)目案例化教程課件:Java異常處理_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java面向?qū)ο蟪绦蛟O(shè)計(jì)Java異常處理教學(xué)內(nèi)容了解什么是異常理解異常的分類掌握異常處理理解自定義異常異常的引入本章開(kāi)始學(xué)習(xí)Java的異常處理機(jī)制,在介紹異常處理機(jī)制之前,先看下面的一個(gè)引例?!纠?-1】:異常案例的引入publicclassDemo4_01{ publicstaticvoidmain(String[]args){ StringCourse[]={"Java程序設(shè)計(jì)","JSP程序設(shè)計(jì)","A程序設(shè)計(jì)","C#程序設(shè)計(jì)"}; for(inti=0;i<=4;i++){ System.out.println(Course[i]); } System.out.println("\nthisistheend"); }}程序運(yùn)行的結(jié)果:異常的概念Java異常是Java提供的用于處理程序中錯(cuò)誤的一種機(jī)制。所謂錯(cuò)誤是指在程序運(yùn)行的過(guò)程中發(fā)生的一些異常事件(如:除0溢出,數(shù)組下標(biāo)越界,所要讀取的文件不存在)。設(shè)計(jì)良好的程序應(yīng)該在異常發(fā)生時(shí)提供處理這些錯(cuò)誤的方法,使得程序不會(huì)因?yàn)楫惓5陌l(fā)生而阻斷或產(chǎn)生不可預(yù)見(jiàn)的結(jié)果Java程序的執(zhí)行過(guò)程中如出現(xiàn)異常事件,可以生成一個(gè)異常類對(duì)象,該異常對(duì)象封裝了異常事件的信息并將被提交給Java運(yùn)行時(shí)系統(tǒng),這個(gè)過(guò)程稱為拋出(throw)異常。當(dāng)Java運(yùn)行時(shí)系統(tǒng)接收到異常對(duì)象時(shí),會(huì)尋找能處理這一異常的代碼并把當(dāng)前異常對(duì)象交給其處理,這一過(guò)程稱為捕獲(catch)異常。異常的分類Java標(biāo)準(zhǔn)庫(kù)內(nèi)建了一些通用的異常,這些類以Throwable為頂層父類,Throwable又派生出Error類和Exception類。Error稱為錯(cuò)誤,由Java虛擬機(jī)生成并拋出,包括動(dòng)態(tài)鏈接失敗、虛擬機(jī)錯(cuò)誤等,程序?qū)ζ洳蛔鎏幚?。Exception是所有異常類的父類,其子類對(duì)應(yīng)了各種各樣可能出現(xiàn)的異常事件,一般需要用戶顯式的聲明或捕獲。Java異常類的類結(jié)構(gòu)圖如圖4-1所示:

程序能處理的Exception異常類的子類,包括IOException和RuntimeException異常,RuntimeException稱為運(yùn)行期異常,一類特殊的異常,如被0除、數(shù)組下標(biāo)超范圍等,其產(chǎn)生比較頻繁,處理麻煩,如果顯式的聲明或捕獲將會(huì)對(duì)程序可讀性和運(yùn)行效率影響很大,因此由系統(tǒng)自動(dòng)檢測(cè)并將它們交給缺省的異常處理程序。異常的處理

程序在運(yùn)行中一旦發(fā)生一個(gè)錯(cuò)誤,系統(tǒng)會(huì)自動(dòng)生成一個(gè)異常對(duì)象,這個(gè)對(duì)象封裝了和這個(gè)異常相關(guān)的信息并且會(huì)被提交給JAVA運(yùn)行時(shí)系統(tǒng),這個(gè)過(guò)程稱為拋出異常。當(dāng)JAVA運(yùn)行時(shí)系統(tǒng)接收到拋出的異常對(duì)象時(shí),會(huì)尋找能處理這一異常的代碼并把該異常對(duì)象交給其處理,這一過(guò)程稱為捕獲異常。JAVA的異常處理掌握5個(gè)關(guān)鍵字try、catch、finally、throws、throw的使用。語(yǔ)法格式1,try語(yǔ)句后面跟一個(gè)catch語(yǔ)句:try{//語(yǔ)句塊;//可能產(chǎn)生異常的代碼}catch(異常類名對(duì)象名){//語(yǔ)句塊;//對(duì)異常的處理}finally{//語(yǔ)句塊;}2、語(yǔ)法格式2,try語(yǔ)句后面跟多個(gè)catch語(yǔ)句:try{//語(yǔ)句塊;......}catch(異常類名1對(duì)象名1){//語(yǔ)句塊;}catch(異常類名2對(duì)象名2){//語(yǔ)句塊;}catch(異常類名3對(duì)象名3){//語(yǔ)句塊}catch...finall{//語(yǔ)句塊;……}try…catch…finally的使用關(guān)于try…catch…finally結(jié)構(gòu),有以下幾點(diǎn)說(shuō)明:1)try語(yǔ)句塊中的語(yǔ)句是可能發(fā)生異常的語(yǔ)句,或者說(shuō)是需要監(jiān)控的語(yǔ)句。如果執(zhí)行到該語(yǔ)句塊中的某條語(yǔ)句發(fā)生異常,則立即停止該語(yǔ)句塊的執(zhí)行,流程會(huì)根據(jù)發(fā)生異常的類型轉(zhuǎn)到相應(yīng)的catch語(yǔ)句塊。2)try語(yǔ)句塊后可以有多個(gè)catch語(yǔ)句塊,每一個(gè)catch語(yǔ)句塊聲明其能處理的異常類型并提供了處理的方法。如果執(zhí)行try語(yǔ)句塊中的語(yǔ)句沒(méi)有發(fā)生異常,顯然所有catch語(yǔ)句塊也不會(huì)被執(zhí)行。3)“catch(異常類參數(shù)名)”這里的參數(shù)用來(lái)接收拋出異常對(duì)象的引用,通過(guò)該引用可以獲取與拋出異常相關(guān)的信息。所以只有當(dāng)拋出的異常類型和“catch(異常類參數(shù)名)”中異常類類型相同或者是其子類的時(shí)候該catch語(yǔ)句塊才會(huì)被執(zhí)行。4)由于異常對(duì)象與catch塊的匹配是按照catch語(yǔ)句塊的先后排列順序進(jìn)行的,有多個(gè)catch語(yǔ)句塊時(shí),最多只會(huì)執(zhí)行其中一個(gè),所以在處理多異常時(shí)應(yīng)注意各catch語(yǔ)句塊的排列順序,如果處理的異常存在繼承關(guān)系,應(yīng)該先處理子類異常后處理父類異常,否則編譯不能通過(guò)。5)finally代碼塊無(wú)論是否發(fā)生異常都會(huì)被執(zhí)行,它為異常處理提供了一個(gè)統(tǒng)一的出口,所以在語(yǔ)句塊中可以進(jìn)行資源的清除工作,如關(guān)閉打開(kāi)的文件或刪除臨時(shí)文件等?!纠?-2】:通過(guò)案例來(lái)掌握try…catch…finally的使用importjava.util.InputMismatchException;importjava.util.Scanner;publicclassDemo4_02{ publicstaticvoidmain(String[]args){ try{ Scannersc=newScanner(System.in); System.out.println("輸入第一個(gè)數(shù):"); inta=sc.nextInt(); System.out.println("輸入第二個(gè)數(shù):"); intb=sc.nextInt(); System.out.println("兩數(shù)相除的結(jié)果為:"+a/b); }catch(InputMismatchExceptione){//輸入不匹配異常 System.out.println("你應(yīng)該輸入整數(shù)"); }catch(ArithmeticExceptione){//算術(shù)異常 System.out.println("除數(shù)不能為0"); }catch(Exceptione){//其他異常 System.out.println("未知名錯(cuò)誤"); }finally{ System.out.println("程序運(yùn)行結(jié)束了"); }}}程序運(yùn)行的結(jié)果:throws和throw的使用throws是聲明該方法可能拋出的異常,如果該方法確實(shí)有異常發(fā)生,會(huì)生成一個(gè)異常對(duì)象并自動(dòng)拋出該異常,也可以采用throw顯示拋出;如果自行定義異常類對(duì)象,然后強(qiáng)制拋出,就要采用throw關(guān)鍵字拋出異常。throws的語(yǔ)法格式:修飾符方法返回值類型方法名(參數(shù)列表)throws異常類1,…異常類n{//方法體}用throws聲明該方法體可能有異常產(chǎn)生,如果有多個(gè)異常類,異常類之間用逗號(hào)分隔。throw關(guān)鍵字拋出異常的語(yǔ)法格式如下:thrownew異常類(參數(shù)列表);throws和throw關(guān)鍵字經(jīng)常配合起來(lái)使用。【例4-3】:通過(guò)案例來(lái)掌握throws的使用classMaths{publicintdiv(inti,intj)throwsException{//定義除法操作,如果有異常,則交給被調(diào)用處處理inttemp=i/j;//計(jì)算,但是此處有可能出現(xiàn)異常returntemp;}}publicclassDemo4_03{ publicstaticvoidmain(Stringargs[])throwsException{Mathsm=newMaths();//實(shí)例化Math類對(duì)象System.out.println("除法操作:"+m.div(10,0));}}程序運(yùn)行結(jié)果:【例4-4】:通過(guò)案例來(lái)掌握throws和throw的使用

publicclassDemo4_04{

publicstaticvoidprintScore(intscore)throwsException{

if(score<0||score>100){

thrownewException("輸入的成績(jī)有誤,必須在0--100之間的整數(shù)");

}else{

System.out.println("該生的成績(jī)是:"+score);

}

}

publicstaticvoidmain(String[]args){

intscore=-1;

try{

printScore(score);

}catch(Exceptione){

System.out.println("捕獲的異常信息為:"+e.getMessage());

}

}

}

程序運(yùn)行結(jié)果:自定義異常只需要繼承Exception類就可以自定義異常類。因?yàn)镴AVA中提供的都是標(biāo)準(zhǔn)異常類(包括一些異常信息),如果需要自己想要的異常信息就可以自定義異常類。【例4-5】:通過(guò)案例來(lái)掌握自定義異常類的使用classMyExceptionextendsException{//自定義異常類繼承Exception類publicMyException(Stringmsg){super(msg);//調(diào)用Exception類中有一個(gè)參數(shù)的構(gòu)造方法}};publicclassDemo4_05{ publicstaticvoidmain(String[]args){ try{ thrownewMyException("自定義異常。");//拋出異常 }catch(Exceptione){ System.out.println(e);//打印錯(cuò)誤信息}}}程序運(yùn)行結(jié)果:任務(wù)總結(jié)主要學(xué)習(xí)了Java的異常處理機(jī)制,學(xué)習(xí)了什么是異常,異常的分類和異常的幾種處理方法,以及自定義異常。Java異常是用于處理程序中在程序運(yùn)行的過(guò)程中發(fā)生的一些異常事件(如:除0溢出,數(shù)組下標(biāo)越界,所要讀取的文件不存在)的一種機(jī)制。Error稱為錯(cuò)誤,由Java虛擬機(jī)生成并拋出,包括動(dòng)態(tài)鏈接失敗、虛擬機(jī)錯(cuò)誤等,程序?qū)ζ洳蛔鎏幚怼untimeException稱為運(yùn)行期異常,一類特殊的異常。JAVA的異常處理掌握5個(gè)關(guān)鍵字try、catch、finally、throws、throw的使用。throws聲明該方法可能拋出的異常,throw是拋出異常。任務(wù)練習(xí)1.同一段程序可能產(chǎn)生不止一種異常。可以放置多個(gè)________子句,其中每一種異常類型都將被檢查,第一個(gè)與之匹配的就會(huì)被執(zhí)行。2.捕獲異常要求在程序的方法中預(yù)先聲明,在調(diào)用方法時(shí)用try-catch-______語(yǔ)句捕獲并處理。3.java語(yǔ)言認(rèn)為那些可預(yù)料和不可預(yù)料的出錯(cuò)稱為_(kāi)________4.按異常處理不同可以分為運(yùn)行異常、捕獲異常、聲明異常和______幾種。5.拋出異常的程序代碼可以是_________類或者是JDK中的某個(gè)類,還可以是JVN.6.拋出異常、生成異常對(duì)象都可以通過(guò)__________語(yǔ)句實(shí)現(xiàn)。7.捕獲異常的統(tǒng)一出口通過(guò)__________語(yǔ)句實(shí)現(xiàn)。8.Throwable類有兩個(gè)子類:____________類和Exception類。9.對(duì)程序語(yǔ)言而言,一般有編譯錯(cuò)誤和____________錯(cuò)誤兩類。10.一個(gè)try語(yǔ)句塊后必須跟__________語(yǔ)句塊,__________語(yǔ)句塊可以沒(méi)有11.自定義異常類必須繼承__________類及其子類12.從命令行得到6個(gè)整數(shù),放入一整型數(shù)組,然后打印輸出,要求:如果輸入數(shù)據(jù)丌為整數(shù),要捕獲Integer.parseInt()產(chǎn)生的異常,顯示“請(qǐng)輸入整數(shù)”,捕獲輸入?yún)?shù)大于6個(gè)的異常(數(shù)組越界),顯示“請(qǐng)輸入最多輸入6個(gè)整數(shù)”。13.

(自定義異常)創(chuàng)建兩個(gè)自定義異常類MyException1和MyException2。

要求:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論