第七章 異常處理基礎(chǔ)篇_第1頁
第七章 異常處理基礎(chǔ)篇_第2頁
第七章 異常處理基礎(chǔ)篇_第3頁
第七章 異常處理基礎(chǔ)篇_第4頁
第七章 異常處理基礎(chǔ)篇_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章異常處理基礎(chǔ)篇第1頁,課件共32頁,創(chuàng)作于2023年2月§1.1錯誤處理的方法概述傳統(tǒng)的程序運行時錯誤處理異常處理第2頁,課件共32頁,創(chuàng)作于2023年2月1傳統(tǒng)的程序運行時錯誤處理

如C語言:函數(shù)返回值=某個可能會執(zhí)行失敗的函數(shù)(); if(函數(shù)返回值==表示該函數(shù)執(zhí)行成功的值){正常代碼} elseif(函數(shù)返回值==代表錯誤情況1的值){處理錯誤情形1} elseif(函數(shù)返回值==代表錯誤情況2的值){處理錯誤情形2}

……第3頁,課件共32頁,創(chuàng)作于2023年2月1傳統(tǒng)的程序運行時錯誤處理

函數(shù)返回值=某個可能會執(zhí)行失敗的函數(shù)(); if(函數(shù)返回值!=表示該函數(shù)執(zhí)行成功的值) {Switch(函數(shù)返回值){ case錯誤情況1的值:處理錯誤情形1 case錯誤情況2的值:處理錯誤情形2

……}} else{正常代碼}第4頁,課件共32頁,創(chuàng)作于2023年2月1傳統(tǒng)的程序運行時錯誤處理缺點:1)整個程序代碼穿插錯誤處理代碼,使得條理性和可讀性差;2)對錯誤處理程序難以集中管理,難以保證程序的一致性;3)對于返回值的意義,要借助于文檔,程序維護困難。第5頁,課件共32頁,創(chuàng)作于2023年2月2異常處理如C++,JAVA語言:就是在異常發(fā)生時,由編程語言提供的某種機制通知應用程序,讓應用程序決定如何進行下一步的處理。 傳統(tǒng)方式:1)負責測出錯誤的發(fā)生(程序設(shè)計者)2)進行錯誤的處理 異常處理方式:2)進行錯誤的處理(程序設(shè)計者)第6頁,課件共32頁,創(chuàng)作于2023年2月2異常處理特點: 1)可將錯誤處理代碼和常規(guī)代碼隔離開來,提高程序的可讀性和可維護性; 2)可以處理一組錯誤,進行集中管理,保證程序的一致性。3)將異常事件分類,體現(xiàn)了良好的層次性。 第7頁,課件共32頁,創(chuàng)作于2023年2月§1.2Java的異常處理機制

Java語言用異常為它的程序提供了錯誤處理方式,為方法的異常終止和出錯處理提供了清晰的接口。異常和異常對象異常的處理過程第8頁,課件共32頁,創(chuàng)作于2023年2月1異常和異常對象異常:在程序執(zhí)行的時候,所發(fā)生會打斷程序正常流程的事件。異常的類型 錯誤出現(xiàn)產(chǎn)生異常對象程序的狀態(tài)信息

“異常”被看作是對象,是繼承自類Throwable的子類。所有Throwable的子類所產(chǎn)生的對象實例,都是異常。第9頁,課件共32頁,創(chuàng)作于2023年2月1異常和異常對象異常類的層次

ErrorObjectThrowableExceptionRuntimeExceptionNon_RuntimeException第10頁,課件共32頁,創(chuàng)作于2023年2月1異常和異常對象運行時異常:運行異??梢圆蛔鎏幚?,運行時系統(tǒng)會把生成的運行時異常對象交給默認的異常處理程序,在標準輸出上顯示異常的內(nèi)容及發(fā)生異常的位置。第11頁,課件共32頁,創(chuàng)作于2023年2月1異常和異常對象ArithmeticException:除0,用0取模;NullPointException:訪問一個空對象中的變量和方法,或一個空數(shù)組中的元素;ClassCastException:把對象o強制成ClassC,而o既不是C的實例,又不是C的子類的實例;NegativeArraySizeException:數(shù)組的長度是負數(shù);ArrayIndexOutOfBoundsException:訪問數(shù)組中的非法元素。第12頁,課件共32頁,創(chuàng)作于2023年2月1異常和異常對象非運行時異常:非運行異常需要使用try-catch-finally語句捕獲異?;蚴褂胻hrows子句生聲明異常。第13頁,課件共32頁,創(chuàng)作于2023年2月1異常和異常對象IOExceptionFileNotFoundException:找不到文件;InterruptedIOException;UnknownHostException;UnknownServiceException;SocketException;MalformedURLException;NoSuchMethodExceptionClassNotFoundException第14頁,課件共32頁,創(chuàng)作于2023年2月2異常的處理過程拋出異常:產(chǎn)生一個異常對象以及把它轉(zhuǎn)交給運行系統(tǒng)間接拋出(try)直接拋出(throw)捕獲異常(catch):找出異常的合適處理方法,即異常指針的選擇過程處理異常第15頁,課件共32頁,創(chuàng)作于2023年2月2異常的處理過程Java的異常處理機制由try/catch/finally組成try{//可能會產(chǎn)生異常的程序塊}catch(Exception1){ //異常處理}catch(Exception2){ //異常處理}[finally{ //清除方法狀態(tài)和關(guān)閉文件等語句}]第16頁,課件共32頁,創(chuàng)作于2023年2月2異常的處理過程例1:try{ System.in.read();}catch(IOExceptione){ Stringerr=e.getMessage(); System.out.println(err); }第17頁,課件共32頁,創(chuàng)作于2023年2月//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頁,課件共32頁,創(chuàng)作于2023年2月第19頁,課件共32頁,創(chuàng)作于2023年2月//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頁,課件共32頁,創(chuàng)作于2023年2月第21頁,課件共32頁,創(chuàng)作于2023年2月2異常的處理過程--聲明異常例2:聲明異常ProtectedvoidmyMethod(){try{ doRead();}catch(IOExceptione){ System.out.println(e.getMessage());}}ProtectedvoiddoRead()throwsIOException{ System.in.read();}第22頁,課件共32頁,創(chuàng)作于2023年2月2異常的處理過程—拋出異常例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頁,課件共32頁,創(chuàng)作于2023年2月2異常的處理過程Throw語句會使得一個異常被拋擲,其結(jié)果將導致程序控制的轉(zhuǎn)換,即轉(zhuǎn)向處理異常的catch塊。形式: thrownewException(“描述字符串”);Throws是將本方法產(chǎn)生的異常不處理,而是拋給上層調(diào)用者。第24頁,課件共32頁,創(chuàng)作于2023年2月§1.3創(chuàng)建自己的異常類創(chuàng)建自己的異常類 繼承Exception及其子類,多數(shù)情況下為非運行時異常。如 classMyExceptionextendsException{

… Stringsay(){…} }在程序中使用自己的異常類 classUseMyException{

…try{thrownewMyException(); }catch(MyExceptione){System.out.println(e.say()); } } 第25頁,課件共32頁,創(chuàng)作于2023年2月小結(jié)JAVA異常處理機制及處理過程異常處理與程序的結(jié)合使用異常,運行時異常,非運行時異常,Error,try-catch-finally,throw,throws第26頁,課件共32頁,創(chuàng)作于2023年2月習題解釋JAVA異常處理機制及處理過程解釋異常,運行時異常,非運行時異常第27頁,課件共32頁,創(chuàng)作于2023年2月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頁,課件共32頁,創(chuàng)作于2023年2月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頁,課件共32頁,創(chuàng)作于2023年2月UsingExceptionsclassDivideByZeroExceptionextendsArithmeticException{publicDivideByZeroException(){

溫馨提示

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

評論

0/150

提交評論