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

下載本文檔

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

文檔簡介

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

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

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

publicclassDemo4_04{

publicstaticvoidprintScore(intscore)throwsException{

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

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

}else{

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

}

}

publicstaticvoidmain(String[]args){

intscore=-1;

try{

printScore(score);

}catch(Exceptione){

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

}

}

}

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

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

要求:

溫馨提示

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

評論

0/150

提交評論