![java異常處理機制即使在編譯時沒有錯誤信息產(chǎn)生但程序運行經(jīng)常會出現(xiàn)一些_第1頁](http://file4.renrendoc.com/view/e0cfcfe61c52633f55730f844b62cf5b/e0cfcfe61c52633f55730f844b62cf5b1.gif)
![java異常處理機制即使在編譯時沒有錯誤信息產(chǎn)生但程序運行經(jīng)常會出現(xiàn)一些_第2頁](http://file4.renrendoc.com/view/e0cfcfe61c52633f55730f844b62cf5b/e0cfcfe61c52633f55730f844b62cf5b2.gif)
![java異常處理機制即使在編譯時沒有錯誤信息產(chǎn)生但程序運行經(jīng)常會出現(xiàn)一些_第3頁](http://file4.renrendoc.com/view/e0cfcfe61c52633f55730f844b62cf5b/e0cfcfe61c52633f55730f844b62cf5b3.gif)
![java異常處理機制即使在編譯時沒有錯誤信息產(chǎn)生但程序運行經(jīng)常會出現(xiàn)一些_第4頁](http://file4.renrendoc.com/view/e0cfcfe61c52633f55730f844b62cf5b/e0cfcfe61c52633f55730f844b62cf5b4.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
Java而言是一種異常。有了異常就要有相應的處理方式。本章將介紹異常的基本Java3種(異常屬于運行時錯誤語法錯誤(syntaxerrorsjava語言規(guī)則。errors邏輯錯誤(logicerrors:沒有按照預期的方案執(zhí)行。(ritetcExetioNPoiterceton(FieNoFoxcetoJavaJava中,所有的異常都是以類的類型存在,除了內(nèi)置的異常類之外,Java也可以自定義異常類。此外,Java的異常處理ifswitch等語句,配合所想得到的錯誤狀況if語句,有時候這樣也未必能捕捉到所有的錯誤,而且這樣做勢必導致程序運行效率的Java程序設計時,應充分地利用Java的異常處理機制,以增進程序的穩(wěn)定性及效率。JavaJava是如何處理異常的。TestException7_1是一個錯誤的程序,它在數(shù)組時,下標值已超過了數(shù)組下標所容許的publicclasspublicstaticvoidmain(Stringintarr[]=newint[5]; //容許5個元素 //下標值超出所容許的范圍System.out.println("endofmain()method!!");}}6Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:atJava的默認異常處理機制會先拋出異常、然TestException7_1的異常發(fā)生后,Java便把這個異常拋了出來,可是拋出來之后沒有程1try代碼塊中。try程序塊若是有異常發(fā)生時,程序的catch塊。照從小到大的順序進行異常。finally塊里的程序代碼。finally通常用作資源的釋放工作。try程序塊是否有異常catch()括號內(nèi)欲捕捉的異常相同。try-cath塊之后繼續(xù)執(zhí)行。 異常處理的流程“異常類”指的是由程序拋出的對象所屬的類,例如TestException7_1中出現(xiàn)的publicclasspublicstaticvoidmain(Stringargs[]){ //檢查這個程序塊的代碼intarr[]=new //}catch(ArrayIndexOutOfBoundsExceptione){} //}}}1、程序第7行一個arr的整型數(shù)組,并開辟了5個數(shù)據(jù)空間catch語句中去處理,程序通過finally代碼塊統(tǒng)異常是屬于ArrayIndexOutOfBoundsException10~138ArrayIndexOutOfBoundsException12行會輸出“數(shù)組下標信息,下例說明了類對象e的應用:publicclasspublicstaticvoidmain(Stringargs[]){intarr[]=newint[5];}System.out.println("異常:"+e);//顯示異常對象e}}}異常:java.lang.ArrayIndexOutOfBoundsException:10想象成是方法的參數(shù),而eArrayIndexOutOfBoundsException類的對象。對象e接收到java.lang.ArrayIndexOutOfBoundsExceptionjava.langArrayIndexOutOfBoundsException類所屬的包。由前面的知識,我們知道,直接打印對象可以輸出內(nèi)容,說明該類重寫了toString()方法。所以,前面我們直接打印e,其實就是e.toString()。 Java默認的異常處理機制做處理。但這種處理方式,Java通常只能輸出異常信息,接著便終止程序的運行。如TestException7_1的異常發(fā)生后,Java默認的異常處理機制會顯示出:Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:10atTestException7_1.main(TestException7_1.java:6)7-2繪出了異常處理機制的選擇流程。
異常處理的方異常可分為兩大類:java.lang.Exception類java.lang.Error類java.lang.Throwable7-3為Throwable7-3ThrowableError與Exception類統(tǒng)稱為異常類,但這兩者本質(zhì)上還是有不同的。Error類Error。TestException7_2ArrayIndexOutOfBoundsException就是屬于這種異常。從異常類的繼承架構(gòu)圖中可以看出:ExceptionIOException、RuntimeException是較常用的兩種。RuntimeException即使不編寫異常處理的程序代碼,依RuntimeException不同的是,IOException一定要編寫異常處理的程序代碼才行,RuntimeExcpetion如下:ArithmeticException0除,運算得出的結(jié)果。try-catch來接收所拋出的異常。拋出異常有下列兩種方式:12在程序中拋出異當程序出現(xiàn)錯誤時,系統(tǒng)會自動拋出異常,除此之外,java也允許程序自行拋出異常,throw語句完成。其語法格式如下:throw異常類實例對象throw后面拋出的是一個異常類的實例對象,下面來看一個實例:publicclasspublicstaticvoidmain(Stringargs[]){inta=4,b=0; //拋出異}
System.out.println(a+"/"+b+"="+a/b);//catch(ArithmeticExceptione){}}}拋出異常為:java.lang.ArithmeticException:一個算術(shù)異常1TestException7_4是要計算a/bb0b0,則系統(tǒng)會拋出ArithmeticException0這個數(shù)。2、在try塊里,利用第8行來判斷除數(shù)b是否為0。如果b=0,則運行第9throwArithmeticExceptionb0a/bb0try913catch()捕捉到異常。new關(guān)鍵字來產(chǎn)生對象。指定方法拋出異方法名稱(參數(shù)…)throws12,…TestException7_5是指定由方法來拋出異常的,如下所示:publicclasspublicstaticvoidmain(String[]args){System.out.println("商為div(10,0));}publicstaticintdiv(inta,intb)throwsException{returna/b;}}TestExeption7_5.java:7:未報告的異常java.lang.Exception;必須對其進行捕捉或以System.out.println("商為div(a^1throwsExceptiontry-catch來捕捉,否則會編譯報錯。TestExeption7_5divtry-catch的語句對其進publicclasspublicstaticvoidmain(String[]System.out.println("商為div(10,}catch(Exceptione){}}publicstaticintdiv(inta,intb)throwsException{returna/b;}}如果在main()方法后再用throwsException的話,那么程序也是依然可以編譯通過throws拋出異常的方法時,可以將此異常在方法中再向上傳遞,而JVM進行處理了。在JDK中提供的大量API方法之中的異常類,但這些類在實際開發(fā)中往往并classextends{…}Exception構(gòu)造方法:publicException(StringException的構(gòu)造方法:super("message");Exception已提供相當豐富的方法,通過繼承,子類均可使用它classDefaultExceptionextendsException{publicDefaultException(Stringmessage){ //調(diào)用Exception}publicStringreturntoString方法}publicStringreturngetMessage方法}}}publicclasspublicstaticvoidmain(Stringargs[]){doublemoney=if(money<Math.pow(2,20))//throwDefaultExceptionthrownewDefaultException("金額不足}} //顯示異常對象e的內(nèi)容}}}多態(tài)中異常的拋出原在多態(tài)中,異常的拋出有一定的原則classOneExceptionextendsException}classTwoExceptionextendsException}classThreeExceptionextendsException}classFathervoidshow()throwsOneException,TwoException}}publicclassTestextendsFather//voidshow()throwsTwoException,ThreeException}publicstaticvoidmain(String[]args){newTest().show();}}classOneExceptionextendsException}classTwoExceptionextendsException}interfaceFootballvoidplay()throws}interfaceBasketballvoidplay()throws}publicclassTestimplementsFootball,Basketball//接口不存在交集,不能拋出的異publicvoidplay()}publicstaticvoidmain(String[]args){newTest().play();}}如果在方法內(nèi)處理了異常則不需要拋出,如果需要調(diào)用者處理異常則需要使用throwsJava1.4assert??梢园褦鄑ruefalse系統(tǒng)會報告一true,能夠使程序員確信程序。誤)5.0以后將是一個錯誤。 boolean條件2、 boolean條件:詳細信例如,如果要進行如下的計算時:doubleysqrt(x)是一個開平方運算,x必須為正才不會出錯。為了檢查傳入的參數(shù)是否為正,可 x>=doubley=assertx>=0:"x>=0";doubley=Math.sqrt(x);xassertAssertionError默認情況下,斷言是關(guān)閉的??梢酝ㄟ^-enabl
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代小區(qū)火災應急救援隊伍的實戰(zhàn)化訓練探討
- 現(xiàn)代企業(yè)員工激勵機制設計與實踐
- 班級環(huán)境衛(wèi)生與校園文化建設的結(jié)合
- 4《機械擺鐘》說課稿-2023-2024學年科學五年級上冊教科版
- 2023七年級數(shù)學上冊 第3章 一次方程與方程組3.2 一元一次方程的應用第1課時 等積變形和行程問題說課稿 (新版)滬科版
- Unit 4 Plants around us Part A Let's learn(說課稿)-2024-2025學年人教PEP版(2024)英語三年級上冊
- 2024-2025學年新教材高中英語 Unit 3 The world meets China預習 新知早知道1(教用文檔)說課稿 外研版選擇性必修第四冊
- 2025日本食品業(yè)A公司特許合同樣本
- 2025年銀行擔保借款合同范本
- 1小蝌蚪找媽媽 說課稿-2024-2025學年語文二年級上冊統(tǒng)編版
- 潮汕民俗文化科普知識講座
- 睡眠障礙護理查房課件
- 金融工程.鄭振龍(全套課件560P)
- 英語演講技巧和欣賞課件
- 物流托運單模板
- 【員工關(guān)系管理研究國內(nèi)外文獻綜述2800字】
- 六年級語文下冊閱讀及參考答案(12篇)
- 蘇教版(蘇少版)九年級美術(shù)下冊全冊課件
- 2022年江蘇省鹽城市中考英語試題及參考答案
- 中國文化簡介英文版(ChineseCultureintroduction)課件
- 文化差異與跨文化交際課件(完整版)
評論
0/150
提交評論