版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章異常處理基礎(chǔ)篇第1頁(yè),共32頁(yè),2023年,2月20日,星期三§1.1錯(cuò)誤處理的方法概述傳統(tǒng)的程序運(yùn)行時(shí)錯(cuò)誤處理異常處理第2頁(yè),共32頁(yè),2023年,2月20日,星期三1傳統(tǒng)的程序運(yùn)行時(shí)錯(cuò)誤處理
如C語(yǔ)言:函數(shù)返回值=某個(gè)可能會(huì)執(zhí)行失敗的函數(shù)(); if(函數(shù)返回值==表示該函數(shù)執(zhí)行成功的值){正常代碼} elseif(函數(shù)返回值==代表錯(cuò)誤情況1的值){處理錯(cuò)誤情形1} elseif(函數(shù)返回值==代表錯(cuò)誤情況2的值){處理錯(cuò)誤情形2}
……第3頁(yè),共32頁(yè),2023年,2月20日,星期三1傳統(tǒng)的程序運(yùn)行時(shí)錯(cuò)誤處理
函數(shù)返回值=某個(gè)可能會(huì)執(zhí)行失敗的函數(shù)(); if(函數(shù)返回值!=表示該函數(shù)執(zhí)行成功的值) {Switch(函數(shù)返回值){ case錯(cuò)誤情況1的值:處理錯(cuò)誤情形1 case錯(cuò)誤情況2的值:處理錯(cuò)誤情形2
……}} else{正常代碼}第4頁(yè),共32頁(yè),2023年,2月20日,星期三1傳統(tǒng)的程序運(yùn)行時(shí)錯(cuò)誤處理缺點(diǎn):1)整個(gè)程序代碼穿插錯(cuò)誤處理代碼,使得條理性和可讀性差;2)對(duì)錯(cuò)誤處理程序難以集中管理,難以保證程序的一致性;3)對(duì)于返回值的意義,要借助于文檔,程序維護(hù)困難。第5頁(yè),共32頁(yè),2023年,2月20日,星期三2異常處理如C++,JAVA語(yǔ)言:就是在異常發(fā)生時(shí),由編程語(yǔ)言提供的某種機(jī)制通知應(yīng)用程序,讓?xiě)?yīng)用程序決定如何進(jìn)行下一步的處理。 傳統(tǒng)方式:1)負(fù)責(zé)測(cè)出錯(cuò)誤的發(fā)生(程序設(shè)計(jì)者)2)進(jìn)行錯(cuò)誤的處理 異常處理方式:2)進(jìn)行錯(cuò)誤的處理(程序設(shè)計(jì)者)第6頁(yè),共32頁(yè),2023年,2月20日,星期三2異常處理特點(diǎn): 1)可將錯(cuò)誤處理代碼和常規(guī)代碼隔離開(kāi)來(lái),提高程序的可讀性和可維護(hù)性; 2)可以處理一組錯(cuò)誤,進(jìn)行集中管理,保證程序的一致性。3)將異常事件分類,體現(xiàn)了良好的層次性。 第7頁(yè),共32頁(yè),2023年,2月20日,星期三§1.2Java的異常處理機(jī)制
Java語(yǔ)言用異常為它的程序提供了錯(cuò)誤處理方式,為方法的異常終止和出錯(cuò)處理提供了清晰的接口。異常和異常對(duì)象異常的處理過(guò)程第8頁(yè),共32頁(yè),2023年,2月20日,星期三1異常和異常對(duì)象異常:在程序執(zhí)行的時(shí)候,所發(fā)生會(huì)打斷程序正常流程的事件。異常的類型 錯(cuò)誤出現(xiàn)產(chǎn)生異常對(duì)象程序的狀態(tài)信息
“異常”被看作是對(duì)象,是繼承自類Throwable的子類。所有Throwable的子類所產(chǎn)生的對(duì)象實(shí)例,都是異常。第9頁(yè),共32頁(yè),2023年,2月20日,星期三1異常和異常對(duì)象異常類的層次
ErrorObjectThrowableExceptionRuntimeExceptionNon_RuntimeException第10頁(yè),共32頁(yè),2023年,2月20日,星期三1異常和異常對(duì)象運(yùn)行時(shí)異常:運(yùn)行異常可以不做處理,運(yùn)行時(shí)系統(tǒng)會(huì)把生成的運(yùn)行時(shí)異常對(duì)象交給默認(rèn)的異常處理程序,在標(biāo)準(zhǔn)輸出上顯示異常的內(nèi)容及發(fā)生異常的位置。第11頁(yè),共32頁(yè),2023年,2月20日,星期三1異常和異常對(duì)象ArithmeticException:除0,用0取模;NullPointException:訪問(wèn)一個(gè)空對(duì)象中的變量和方法,或一個(gè)空數(shù)組中的元素;ClassCastException:把對(duì)象o強(qiáng)制成ClassC,而o既不是C的實(shí)例,又不是C的子類的實(shí)例;NegativeArraySizeException:數(shù)組的長(zhǎng)度是負(fù)數(shù);ArrayIndexOutOfBoundsException:訪問(wèn)數(shù)組中的非法元素。第12頁(yè),共32頁(yè),2023年,2月20日,星期三1異常和異常對(duì)象非運(yùn)行時(shí)異常:非運(yùn)行異常需要使用try-catch-finally語(yǔ)句捕獲異常或使用throws子句生聲明異常。第13頁(yè),共32頁(yè),2023年,2月20日,星期三1異常和異常對(duì)象IOExceptionFileNotFoundException:找不到文件;InterruptedIOException;UnknownHostException;UnknownServiceException;SocketException;MalformedURLException;NoSuchMethodExceptionClassNotFoundException第14頁(yè),共32頁(yè),2023年,2月20日,星期三2異常的處理過(guò)程拋出異常:產(chǎn)生一個(gè)異常對(duì)象以及把它轉(zhuǎn)交給運(yùn)行系統(tǒng)間接拋出(try)直接拋出(throw)捕獲異常(catch):找出異常的合適處理方法,即異常指針的選擇過(guò)程處理異常第15頁(yè),共32頁(yè),2023年,2月20日,星期三2異常的處理過(guò)程Java的異常處理機(jī)制由try/catch/finally組成try{//可能會(huì)產(chǎn)生異常的程序塊}catch(Exception1){ //異常處理}catch(Exception2){ //異常處理}[finally{ //清除方法狀態(tài)和關(guān)閉文件等語(yǔ)句}]第16頁(yè),共32頁(yè),2023年,2月20日,星期三2異常的處理過(guò)程例1:try{ System.in.read();}catch(IOExceptione){ Stringerr=e.getMessage(); System.out.println(err); }第17頁(yè),共32頁(yè),2023年,2月20日,星期三//BubbleSort1.javapublicclassBubbleSort1{publicstaticvoidmain(Stringargs[]){inta[]=newint[10];for(inti=0;i<10;i++)a[i]=(int)(Math.random()*100);for(inti=0;i<a.length;i++)System.out.print(a[i]+"");System.out.println();bubbleSort(a);System.out.println("Dataitemsinascendingorder");for(inti=0;i<a.length;i++)System.out.print(a[i]+"");}publicstaticvoidbubbleSort(intb[]){for(intpass=b.length-1;pass>0;pass--){for(inti=0;i<pass;i++)if(b[i]>b[i+2])swap(b,i,i+1);}}publicstaticvoidswap(intc[],intfirst,intsecond){inthold;hold=c[first];c[first]=c[second];c[second]=hold;}}第18頁(yè),共32頁(yè),2023年,2月20日,星期三第19頁(yè),共32頁(yè),2023年,2月20日,星期三//BubbleSort2.javapublicclassBubbleSort2{publicstaticvoidmain(Stringargs[]){inta[]=newint[10];for(inti=0;i<10;i++)a[i]=(int)(Math.random()*100);for(inti=0;i<a.length;i++)System.out.print(a[i]+"");System.out.println();bubbleSort(a);System.out.println("Dataitemsinascendingorder");for(inti=0;i<a.length;i++)System.out.print(a[i]+"");}publicstaticvoidbubbleSort(intb[]){
try{for(intpass=b.length-1;pass>0;pass--){for(inti=0;i<pass;i++)if(b[i]>b[i+2])swap(b,i,i+1);}
}catch(ArrayIndexOutOfBoundsExceptione){System.out.println("出現(xiàn)數(shù)組越界異常:"+e.getMessage());}}
publicstaticvoidswap(intc[],intfirst,intsecond){inthold;hold=c[first];c[first]=c[second];c[second]=hold;}}第20頁(yè),共32頁(yè),2023年,2月20日,星期三第21頁(yè),共32頁(yè),2023年,2月20日,星期三2異常的處理過(guò)程--聲明異常例2:聲明異常ProtectedvoidmyMethod(){try{ doRead();}catch(IOExceptione){ System.out.println(e.getMessage());}}ProtectedvoiddoRead()throwsIOException{ System.in.read();}第22頁(yè),共32頁(yè),2023年,2月20日,星期三2異常的處理過(guò)程—拋出異常例3:Publicstaticvoidmain(String[]args){try{System.out.pringtln(passingGrade(90,80));}catch(Exceptione){ System.out.println(e.getMessage());}}StaticvoidpassingGrade(intcorrect,inttotal)throwsException{if(correct>total)
thrownewException(“Invalidvalues”);}第23頁(yè),共32頁(yè),2023年,2月20日,星期三2異常的處理過(guò)程Throw語(yǔ)句會(huì)使得一個(gè)異常被拋擲,其結(jié)果將導(dǎo)致程序控制的轉(zhuǎn)換,即轉(zhuǎn)向處理異常的catch塊。形式: thrownewException(“描述字符串”);Throws是將本方法產(chǎn)生的異常不處理,而是拋給上層調(diào)用者。第24頁(yè),共32頁(yè),2023年,2月20日,星期三§1.3創(chuàng)建自己的異常類創(chuàng)建自己的異常類 繼承Exception及其子類,多數(shù)情況下為非運(yùn)行時(shí)異常。如 classMyExceptionextendsException{
… Stringsay(){…} }在程序中使用自己的異常類 classUseMyException{
…try{thrownewMyException(); }catch(MyExceptione){System.out.println(e.say()); } } 第25頁(yè),共32頁(yè),2023年,2月20日,星期三小結(jié)JAVA異常處理機(jī)制及處理過(guò)程異常處理與程序的結(jié)合使用異常,運(yùn)行時(shí)異常,非運(yùn)行時(shí)異常,Error,try-catch-finally,throw,throws第26頁(yè),共32頁(yè),2023年,2月20日,星期三習(xí)題解釋JAVA異常處理機(jī)制及處理過(guò)程解釋異常,運(yùn)行時(shí)異常,非運(yùn)行時(shí)異常第27頁(yè),共32頁(yè),2023年,2月20日,星期三UsingExceptions.javapublicclassUsingExceptions{publicstaticvoidmain(Stringargs[]){try{method1();}catch(Exceptione){System.err.println(e.getMessage()+"\n");}}publicstaticvoidmethod1()throwsException{method2();}publicstaticvoidmethod2()throwsException{method3();}publicstaticvoidmethod3()throwsException{thrownewException("Exceptionthrowninmethod3");}}第28頁(yè),共32頁(yè),2023年,2月20日,星期三UsingExceptions.javapublicclassUsingExceptions{publicstaticvoidmain(Stringargs[]){ try{throwException();}catch(Exceptione){System.err.println("Exceptionhandledinmain");}}publicstaticvoidthrowException()throwsException{try{System.out.println("MethodthrowException");thrownewException();}catch(RuntimeExceptione){System.err.println("Exceptionhandledin"+"methodthrowException");}finally{System.err.println("Finallyisalwaysexecuted");}}}第29頁(yè),共32頁(yè),2023年,2月20日,星期三UsingExceptionsclassDivideByZeroExceptionextendsArithmeticException{publicDivideByZeroException(){
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 娛樂(lè)行業(yè)宣傳活動(dòng)總結(jié)
- 通訊設(shè)備行業(yè)安全管理工作總結(jié)
- 二零二五年度航空發(fā)動(dòng)機(jī)機(jī)油專業(yè)供應(yīng)及維修合同3篇
- 個(gè)人車輛抵債協(xié)議書(shū)(二零二五版)債權(quán)債務(wù)解除條款4篇
- 2025版老舊小區(qū)水電改造工程承包協(xié)議書(shū)2篇
- 二零二五年度電商小商品購(gòu)銷合作合同規(guī)范文本3篇
- 二零二五年度進(jìn)口建筑材料質(zhì)量檢驗(yàn)合同范本6篇
- 二零二五年度個(gè)人住宅裝修工程環(huán)保驗(yàn)收合同2篇
- 生活服務(wù)保安工作總結(jié)
- 裝修設(shè)計(jì)行業(yè)銷售工作總結(jié)
- 衛(wèi)生專業(yè)技術(shù)資格考試衛(wèi)生檢驗(yàn)技術(shù)(初級(jí)(師)211)專業(yè)知識(shí)試題及答案指導(dǎo)
- 0-9任意四位數(shù)手機(jī)密碼排列組合全部數(shù)據(jù)列表
- 2023高考語(yǔ)文文言文復(fù)習(xí):《說(shuō)苑》練習(xí)題(含答案解析)
- VW-Formel-Q審核提問(wèn)表(完整版)
- 物業(yè)客服溝通技巧培訓(xùn)課件
- 工程造價(jià)咨詢服務(wù)方案(技術(shù)方案)
- 常用藥物作用及副作用課件
- 小學(xué)生作文方格紙A4紙直接打印版
- 幼兒阿拉伯?dāng)?shù)字描紅(0-100)打印版
- 標(biāo)桿地產(chǎn)集團(tuán) 研發(fā)設(shè)計(jì) 工程管理 品質(zhì)地庫(kù)標(biāo)準(zhǔn)研發(fā)成果V1.0
- 2023年1月浙江高考英語(yǔ)聽(tīng)力試題及答案(含MP3+錄音原文)
評(píng)論
0/150
提交評(píng)論