下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java而言是一種異常。有了異常就要有相應(yīng)的處理方式。本章將介紹異常的基本Java3種(異常屬于運(yùn)行時(shí)錯(cuò)誤語(yǔ)法錯(cuò)誤(syntaxerrorsjava語(yǔ)言規(guī)則。errors邏輯錯(cuò)誤(logicerrors:沒(méi)有按照預(yù)期的方案執(zhí)行。(ritetcExetioNPoiterceton(FieNoFoxcetoJavaJava中,所有的異常都是以類(lèi)的類(lèi)型存在,除了內(nèi)置的異常類(lèi)之外,Java也可以自定義異常類(lèi)。此外,Java的異常處理ifswitch等語(yǔ)句,配合所想得到的錯(cuò)誤狀況if語(yǔ)句,有時(shí)候這樣也未必能捕捉到所有的錯(cuò)誤,而且這樣做勢(shì)必導(dǎo)致程序運(yùn)行效率的Java程序設(shè)計(jì)時(shí),應(yīng)充分地利用Java的異常處理機(jī)制,以增進(jìn)程序的穩(wěn)定性及效率。JavaJava是如何處理異常的。TestException7_1是一個(gè)錯(cuò)誤的程序,它在數(shù)組時(shí),下標(biāo)值已超過(guò)了數(shù)組下標(biāo)所容許的publicclasspublicstaticvoidmain(Stringintarr[]=newint[5]; //容許5個(gè)元素 //下標(biāo)值超出所容許的范圍System.out.println("endofmain()method!!");}}6Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:atJava的默認(rèn)異常處理機(jī)制會(huì)先拋出異常、然TestException7_1的異常發(fā)生后,Java便把這個(gè)異常拋了出來(lái),可是拋出來(lái)之后沒(méi)有程1try代碼塊中。try程序塊若是有異常發(fā)生時(shí),程序的catch塊。照從小到大的順序進(jìn)行異常。finally塊里的程序代碼。finally通常用作資源的釋放工作。try程序塊是否有異常catch()括號(hào)內(nèi)欲捕捉的異常相同。try-cath塊之后繼續(xù)執(zhí)行。 異常處理的流程“異常類(lèi)”指的是由程序拋出的對(duì)象所屬的類(lèi),例如TestException7_1中出現(xiàn)的publicclasspublicstaticvoidmain(Stringargs[]){ //檢查這個(gè)程序塊的代碼intarr[]=new //}catch(ArrayIndexOutOfBoundsExceptione){} //}}}1、程序第7行一個(gè)arr的整型數(shù)組,并開(kāi)辟了5個(gè)數(shù)據(jù)空間catch語(yǔ)句中去處理,程序通過(guò)finally代碼塊統(tǒng)異常是屬于A(yíng)rrayIndexOutOfBoundsException10~138ArrayIndexOutOfBoundsException12行會(huì)輸出“數(shù)組下標(biāo)信息,下例說(shuō)明了類(lèi)對(duì)象e的應(yīng)用:publicclasspublicstaticvoidmain(Stringargs[]){intarr[]=newint[5];}System.out.println("異常:"+e);//顯示異常對(duì)象e}}}異常:java.lang.ArrayIndexOutOfBoundsException:10想象成是方法的參數(shù),而eArrayIndexOutOfBoundsException類(lèi)的對(duì)象。對(duì)象e接收到j(luò)ava.lang.ArrayIndexOutOfBoundsExceptionjava.langArrayIndexOutOfBoundsException類(lèi)所屬的包。由前面的知識(shí),我們知道,直接打印對(duì)象可以輸出內(nèi)容,說(shuō)明該類(lèi)重寫(xiě)了toString()方法。所以,前面我們直接打印e,其實(shí)就是e.toString()。 Java默認(rèn)的異常處理機(jī)制做處理。但這種處理方式,Java通常只能輸出異常信息,接著便終止程序的運(yùn)行。如TestException7_1的異常發(fā)生后,Java默認(rèn)的異常處理機(jī)制會(huì)顯示出:Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:10atTestException7_1.main(TestException7_1.java:6)7-2繪出了異常處理機(jī)制的選擇流程。
異常處理的方異??煞譃閮纱箢?lèi):java.lang.Exception類(lèi)java.lang.Error類(lèi)java.lang.Throwable7-3為T(mén)hrowable7-3ThrowableError與Exception類(lèi)統(tǒng)稱(chēng)為異常類(lèi),但這兩者本質(zhì)上還是有不同的。Error類(lèi)Error。TestException7_2ArrayIndexOutOfBoundsException就是屬于這種異常。從異常類(lèi)的繼承架構(gòu)圖中可以看出:ExceptionIOException、RuntimeException是較常用的兩種。RuntimeException即使不編寫(xiě)異常處理的程序代碼,依RuntimeException不同的是,IOException一定要編寫(xiě)異常處理的程序代碼才行,RuntimeExcpetion如下:ArithmeticException0除,運(yùn)算得出的結(jié)果。try-catch來(lái)接收所拋出的異常。拋出異常有下列兩種方式:12在程序中拋出異當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),系統(tǒng)會(huì)自動(dòng)拋出異常,除此之外,java也允許程序自行拋出異常,throw語(yǔ)句完成。其語(yǔ)法格式如下:throw異常類(lèi)實(shí)例對(duì)象throw后面拋出的是一個(gè)異常類(lèi)的實(shí)例對(duì)象,下面來(lái)看一個(gè)實(shí)例:publicclasspublicstaticvoidmain(Stringargs[]){inta=4,b=0; //拋出異}
System.out.println(a+"/"+b+"="+a/b);//catch(ArithmeticExceptione){}}}拋出異常為:java.lang.ArithmeticException:一個(gè)算術(shù)異常1TestException7_4是要計(jì)算a/bb0b0,則系統(tǒng)會(huì)拋出ArithmeticException0這個(gè)數(shù)。2、在try塊里,利用第8行來(lái)判斷除數(shù)b是否為0。如果b=0,則運(yùn)行第9throwArithmeticExceptionb0a/bb0try913catch()捕捉到異常。new關(guān)鍵字來(lái)產(chǎn)生對(duì)象。指定方法拋出異方法名稱(chēng)(參數(shù)…)throws12,…TestException7_5是指定由方法來(lái)拋出異常的,如下所示:publicclasspublicstaticvoidmain(String[]args){System.out.println("商為div(10,0));}publicstaticintdiv(inta,intb)throwsException{returna/b;}}TestExeption7_5.java:7:未報(bào)告的異常java.lang.Exception;必須對(duì)其進(jìn)行捕捉或以System.out.println("商為div(a^1throwsExceptiontry-catch來(lái)捕捉,否則會(huì)編譯報(bào)錯(cuò)。TestExeption7_5divtry-catch的語(yǔ)句對(duì)其進(jìn)publicclasspublicstaticvoidmain(String[]System.out.println("商為div(10,}catch(Exceptione){}}publicstaticintdiv(inta,intb)throwsException{returna/b;}}如果在main()方法后再用throwsException的話(huà),那么程序也是依然可以編譯通過(guò)throws拋出異常的方法時(shí),可以將此異常在方法中再向上傳遞,而JVM進(jìn)行處理了。在JDK中提供的大量API方法之中的異常類(lèi),但這些類(lèi)在實(shí)際開(kāi)發(fā)中往往并classextends{…}Exception構(gòu)造方法:publicException(StringException的構(gòu)造方法:super("message");Exception已提供相當(dāng)豐富的方法,通過(guò)繼承,子類(lèi)均可使用它c(diǎn)lassDefaultExceptionextendsException{publicDefaultException(Stringmessage){ //調(diào)用Exception}publicStringreturntoString方法}publicStringreturngetMessage方法}}}publicclasspublicstaticvoidmain(Stringargs[]){doublemoney=if(money<Math.pow(2,20))//throwDefaultExceptionthrownewDefaultException("金額不足}} //顯示異常對(duì)象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)會(huì)報(bào)告一true,能夠使程序員確信程序。誤)5.0以后將是一個(gè)錯(cuò)誤。 boolean條件2、 boolean條件:詳細(xì)信例如,如果要進(jìn)行如下的計(jì)算時(shí):doubleysqrt(x)是一個(gè)開(kāi)平方運(yùn)算,x必須為正才不會(huì)出錯(cuò)。為了檢查傳入的參數(shù)是否為正,可 x>=doubley=assertx>=0:"x>=0";doubley=Math.sqrt(x);xassertAssertionError默認(rèn)情況下,斷言是關(guān)閉的。可以通過(guò)-enabl
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度寵物養(yǎng)護(hù)服務(wù)中介擔(dān)保服務(wù)條款3篇
- 2024-2030年中國(guó)垃圾發(fā)電行業(yè)發(fā)展困境與十三五投資建議報(bào)告
- 2024-2030年中國(guó)衛(wèi)浴五金行業(yè)市場(chǎng)競(jìng)爭(zhēng)戰(zhàn)略及發(fā)展?jié)摿ρ芯繄?bào)告
- 2024年物業(yè)管理合作協(xié)議模板6篇
- 2024年機(jī)器操作安全合同3篇
- 滿(mǎn)洲里俄語(yǔ)職業(yè)學(xué)院《進(jìn)出口業(yè)務(wù)實(shí)操二》2023-2024學(xué)年第一學(xué)期期末試卷
- 漯河醫(yī)學(xué)高等專(zhuān)科學(xué)校《酒店管理信息化軟件實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024套房智能家居系統(tǒng)設(shè)計(jì)與安裝服務(wù)合同
- 2025微博微信廣告發(fā)布合同書(shū)
- 單位人力資源管理制度品讀選集
- 企業(yè)工會(huì)工作制度規(guī)章制度
- 公路工程隨機(jī)抽樣一覽表(路基路面現(xiàn)場(chǎng)測(cè)試隨機(jī)選點(diǎn)方法自動(dòng)計(jì)算)
- 學(xué)生矛盾糾紛化解記錄表
- 人教版六年級(jí)數(shù)學(xué)上冊(cè) (數(shù)與形(1))數(shù)學(xué)廣角教學(xué)課件
- 31智能養(yǎng)老創(chuàng)業(yè)計(jì)劃書(shū)互聯(lián)網(wǎng)+大學(xué)生創(chuàng)新創(chuàng)業(yè)大賽
- 中醫(yī)醫(yī)療技術(shù)手冊(cè)
- 血透室對(duì)深靜脈導(dǎo)管感染率高要因分析品管圈魚(yú)骨圖對(duì)策擬定
- PHP編程基礎(chǔ)與實(shí)例教程第3版PPT完整全套教學(xué)課件
- 國(guó)開(kāi)日常學(xué)習(xí)行為表現(xiàn)范文(精選5篇)
- 教師跟崗培訓(xùn)個(gè)人總結(jié)匯報(bào)
- 計(jì)量器具的檢定及校驗(yàn)分析獲獎(jiǎng)科研報(bào)告
評(píng)論
0/150
提交評(píng)論