下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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中,所有的異常都是以類的類型存在,除了內(nèi)置的異常類之外,Java也可以自定義異常類。此外,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í)行。 異常處理的流程“異常類”指的是由程序拋出的對(duì)象所屬的類,例如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)異常是屬于ArrayIndexOutOfBoundsException10~138ArrayIndexOutOfBoundsException12行會(huì)輸出“數(shù)組下標(biāo)信息,下例說(shuō)明了類對(duì)象e的應(yīng)用:publicclasspublicstaticvoidmain(Stringargs[]){intarr[]=newint[5];}System.out.println("異常:"+e);//顯示異常對(duì)象e}}}異常:java.lang.ArrayIndexOutOfBoundsException:10想象成是方法的參數(shù),而eArrayIndexOutOfBoundsException類的對(duì)象。對(duì)象e接收到j(luò)ava.lang.ArrayIndexOutOfBoundsExceptionjava.langArrayIndexOutOfBoundsException類所屬的包。由前面的知識(shí),我們知道,直接打印對(duì)象可以輸出內(nèi)容,說(shuō)明該類重寫(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ī)制的選擇流程。
異常處理的方異??煞譃閮纱箢悾簀ava.lang.Exception類java.lang.Error類java.lang.Throwable7-3為Throwable7-3ThrowableError與Exception類統(tǒng)稱為異常類,但這兩者本質(zhì)上還是有不同的。Error類Error。TestException7_2ArrayIndexOutOfBoundsException就是屬于這種異常。從異常類的繼承架構(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異常類實(shí)例對(duì)象throw后面拋出的是一個(gè)異常類的實(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ì)象。指定方法拋出異方法名稱(參數(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的話,那么程序也是依然可以編譯通過(guò)throws拋出異常的方法時(shí),可以將此異常在方法中再向上傳遞,而JVM進(jìn)行處理了。在JDK中提供的大量API方法之中的異常類,但這些類在實(shí)際開(kāi)發(fā)中往往并classextends{…}Exception構(gòu)造方法:publicException(StringException的構(gòu)造方法:super("message");Exception已提供相當(dāng)豐富的方法,通過(guò)繼承,子類均可使用它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。可以把斷truefalse系統(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)益歸上傳用戶所有。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黑龍江齊糧集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 寧波人力資源服務(wù)行業(yè)協(xié)會(huì)秘書(shū)處招考1名秘書(shū)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 天津市西青區(qū)事業(yè)單位公開(kāi)招聘138人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 天津華能楊柳青熱電限責(zé)任公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 國(guó)網(wǎng)青海省電力公司2025年高校畢業(yè)生招聘統(tǒng)一筆試(第一批)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 國(guó)網(wǎng)江蘇省電力限公司2025年招聘高校畢業(yè)生(第二批)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 國(guó)網(wǎng)2025年高校畢業(yè)生招聘魯能集團(tuán)限公司招聘380人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心海南分中心招考聘用高頻重點(diǎn)提升(共500題)附帶答案詳解
- 二零二五年度班主任新手成長(zhǎng)輔導(dǎo)與教育教學(xué)創(chuàng)新協(xié)議3篇
- 國(guó)家發(fā)展和改革委員會(huì)中國(guó)發(fā)展改革報(bào)社面向社會(huì)公開(kāi)招聘2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 第2課 各種各樣的運(yùn)動(dòng)(說(shuō)課稿)-2023-2024學(xué)年三年級(jí)下冊(cè)科學(xué)教科版
- 北京2025年首都醫(yī)科大學(xué)附屬北京友誼醫(yī)院招聘140人歷年參考題庫(kù)(頻考版)含答案解析
- 股權(quán)質(zhì)押權(quán)借款合同模板
- 《工商管理專業(yè)畢業(yè)實(shí)習(xí)》課程教學(xué)大綱
- 2025年中國(guó)社區(qū)團(tuán)購(gòu)行業(yè)發(fā)展環(huán)境、運(yùn)行態(tài)勢(shì)及投資前景分析報(bào)告(智研咨詢發(fā)布)
- 國(guó)開(kāi)電大本科《西方經(jīng)濟(jì)學(xué)(本)》網(wǎng)上形考(作業(yè)一至六)試題及答案
- 提高有風(fēng)險(xiǎn)患者預(yù)防跌倒墜床護(hù)理措施落實(shí)率品管圈PDCA案例匯報(bào)
- 建材行業(yè)綠色建筑材料配送方案
- 2024年行政執(zhí)法人員執(zhí)法資格知識(shí)考試題庫(kù)(附含答案)
- 放射性藥物專題知識(shí)講座培訓(xùn)課件
- 山西省2023年中考道德與法治真題試卷(含答案)
評(píng)論
0/150
提交評(píng)論