![java程序設(shè)計(jì)基礎(chǔ)wxcodingbugott獲取有趣有用學(xué)習(xí)資源-語(yǔ)言第3章異常處理_第1頁(yè)](http://file4.renrendoc.com/view/3b36a5c1d99c725bc9e25f92fe5d70f8/3b36a5c1d99c725bc9e25f92fe5d70f81.gif)
![java程序設(shè)計(jì)基礎(chǔ)wxcodingbugott獲取有趣有用學(xué)習(xí)資源-語(yǔ)言第3章異常處理_第2頁(yè)](http://file4.renrendoc.com/view/3b36a5c1d99c725bc9e25f92fe5d70f8/3b36a5c1d99c725bc9e25f92fe5d70f82.gif)
![java程序設(shè)計(jì)基礎(chǔ)wxcodingbugott獲取有趣有用學(xué)習(xí)資源-語(yǔ)言第3章異常處理_第3頁(yè)](http://file4.renrendoc.com/view/3b36a5c1d99c725bc9e25f92fe5d70f8/3b36a5c1d99c725bc9e25f92fe5d70f83.gif)
![java程序設(shè)計(jì)基礎(chǔ)wxcodingbugott獲取有趣有用學(xué)習(xí)資源-語(yǔ)言第3章異常處理_第4頁(yè)](http://file4.renrendoc.com/view/3b36a5c1d99c725bc9e25f92fe5d70f8/3b36a5c1d99c725bc9e25f92fe5d70f84.gif)
![java程序設(shè)計(jì)基礎(chǔ)wxcodingbugott獲取有趣有用學(xué)習(xí)資源-語(yǔ)言第3章異常處理_第5頁(yè)](http://file4.renrendoc.com/view/3b36a5c1d99c725bc9e25f92fe5d70f8/3b36a5c1d99c725bc9e25f92fe5d70f85.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第三章異常與調(diào)試廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2本章內(nèi)容3.1異常的基本概念3.2異常處理的種類3.3異常與繼承3.4異常處理機(jī)制的優(yōu)點(diǎn)和使用原則廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院33.1.1什么是異常?異常是在程序運(yùn)行過(guò)程中發(fā)生的異常事件。例如:除0溢出、數(shù)組越界、文件找不到等,這些事件的發(fā)生將阻止程序的正常運(yùn)行。程序設(shè)計(jì)時(shí),程序員必須考慮到可能發(fā)生的異常事件并做出相應(yīng)的處理。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院43.1.2異常處理機(jī)制異常處理機(jī)制:Java通過(guò)面向?qū)ο蟮姆椒▉?lái)處理異常。即在一個(gè)方法的運(yùn)行過(guò)程中,如果發(fā)生了異常,則這個(gè)方法生成一個(gè)代表該異常的對(duì)象,并把它交給運(yùn)行時(shí)系統(tǒng),運(yùn)行時(shí)系統(tǒng)尋找相應(yīng)的代碼來(lái)處理這一異常。有兩個(gè)重要的概念:1.拋出異常:將異常事件生成異常對(duì)象并把它提交給運(yùn)行時(shí)系統(tǒng)的過(guò)程稱為拋出(throw)一個(gè)異常。2.捕獲異常:運(yùn)行時(shí)系統(tǒng)在方法的調(diào)用棧中查找,從生成異常的方法開始進(jìn)行回朔,直到找到包含相應(yīng)異常處理的方法為止,這一個(gè)過(guò)程稱為捕獲(catch)一個(gè)異常。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院53.1.3Throwable類及其子類要用面向?qū)ο蟮姆椒ㄌ幚懋惓#捅仨毥㈩惖膶哟?。類Throwable位于這一類層次的最頂層,只有它的子類對(duì)象才可以作為一個(gè)異常被拋出和捕獲。Java中的異常層次結(jié)構(gòu)分支1分支2分支2.1分支2.2~2.x廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院6異常層次結(jié)構(gòu)的分支Error類(如動(dòng)態(tài)鏈接錯(cuò)誤等),由Java虛擬機(jī)生成并拋出。一般的Java應(yīng)用程序不處理這類異常。2.Exception類是Java程序生成或拋出的對(duì)象。它有各種不同的子類分別對(duì)應(yīng)于不同類型的異常。(1)RunTimeException類及其繼承類,稱作運(yùn)行時(shí)異常。Java程序在運(yùn)行時(shí)生成異常,例如被0除、數(shù)組下標(biāo)越界、訪問(wèn)空引用等。(2)除此(RunTimeException)之外,其他則被稱作非運(yùn)行時(shí)異常,例如輸入輸出異常。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院73.2異常處理的種類異常處理可以有以下幾種:對(duì)運(yùn)行時(shí)發(fā)生的異常可以不做處理;使用try-catch-finally語(yǔ)句捕獲異常;通過(guò)throws子句聲明拋棄異常;定義自己的異常類,并用throw語(yǔ)句拋出異常;廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院83.2.1運(yùn)行時(shí)異常運(yùn)行時(shí)異常是由Java運(yùn)行時(shí)系統(tǒng)在程序的運(yùn)行過(guò)程中檢測(cè)到的。它可能在程序的任意部位發(fā)生,而且其數(shù)量可能很大,因此Java編譯器允許程序員不對(duì)它進(jìn)行處理。這時(shí),Java運(yùn)行時(shí)系統(tǒng)會(huì)把生成的運(yùn)行時(shí)異常對(duì)象交給缺省的異常處理程序,在標(biāo)準(zhǔn)輸出上顯示異常的內(nèi)容以及發(fā)生異常的位置。例如:廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院93.2.2捕獲異常我們可以用try–catch-finally語(yǔ)句來(lái)捕獲一個(gè)或多個(gè)異常,語(yǔ)法結(jié)構(gòu)如下:
try{
可能產(chǎn)生異常的代碼段;
}
catch(異常類名1
對(duì)象名1){
處理語(yǔ)句組1;
}
catch(異常類名2
對(duì)象名2){
處理語(yǔ)句組2;
}……
finally{
最終處理語(yǔ)句;}廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院101.try語(yǔ)句try語(yǔ)句用花括號(hào){}指定了一段代碼,該段代碼為可能發(fā)生異常的語(yǔ)句。例如:
try{int[]a={1,2,3,4,5};intsum=0;for(inti=0;i<=5;i++)sum=sum+a[i];System.out.println(sum);}這段代碼可能產(chǎn)生引用了“超出數(shù)組下標(biāo)”的錯(cuò)誤,應(yīng)用捕捉對(duì)應(yīng)的ArrayIndexOutOfBoundsException對(duì)象。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院112.catch語(yǔ)句catch語(yǔ)句的參數(shù)類似于方法的聲明,包括一個(gè)異常類型和一個(gè)異常對(duì)象。catch(異常類名1
對(duì)象名1){
處理語(yǔ)句組1;
}異常類名指明了catch語(yǔ)句所處理的異常類型,必須為Throwable類的子類,異常對(duì)象則由運(yùn)行時(shí)系統(tǒng)在try所指定的代碼塊中生成并被捕獲,花括號(hào){}中包含對(duì)象的處理,其中可以調(diào)用對(duì)象的方法。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院122.catch語(yǔ)句(續(xù))catch語(yǔ)句可以有多個(gè),分別處理不同類型的異常。拋出一個(gè)異常對(duì)象后,Java運(yùn)行時(shí)系統(tǒng)從上到下分別對(duì)每個(gè)catch語(yǔ)句處理的異常類型進(jìn)行檢測(cè),直到找到某條catch語(yǔ)句所處理的異常類型與產(chǎn)生的異常類型完全匹配為止。因此,catch語(yǔ)句的排列順序應(yīng)該是從特殊到一般。也可以用一個(gè)catch語(yǔ)句處理多個(gè)異常類型,這時(shí)它的異常類型參數(shù)應(yīng)該是多個(gè)異常類型的父類,程序設(shè)計(jì)中要根據(jù)具體的情況來(lái)選擇catch語(yǔ)句的異常處理類型。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院133.finally語(yǔ)句無(wú)論try所指定的程序塊中是否異常,也無(wú)論catch語(yǔ)句的異常類型是否與所拋出的異常的類型一致,finally所指定的代碼都要被執(zhí)行,即它提供了統(tǒng)一的出口。通常在finally語(yǔ)句中可以進(jìn)行資源的清除工作。如關(guān)閉打開的文件等。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院143.2.3聲明拋棄異常在某些情況,如果在一個(gè)方法中生成異常對(duì)象,但是這一方法并不知道該如何處理異常對(duì)象時(shí),該方法就應(yīng)該聲明拋棄異常。即使得異常對(duì)象可以從調(diào)用棧向后傳播,直到有合適的方法捕獲它為止。
通過(guò)方法聲明中的throws子句加以定義的,其格式如下:returnTypemethodName([paramlist])
throws
exceptionList
其中exceptionList中可以聲明多個(gè)異常,用逗號(hào)隔開注意:對(duì)非運(yùn)行時(shí)的異常,或throw語(yǔ)句拋出的異常,必須進(jìn)行捕獲或者聲明拋棄廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院153.2.4拋出異常由Java系統(tǒng)檢測(cè)到某些異常條件后,隱式地拋出異常對(duì)象程序員檢測(cè)到某些異常條件(與業(yè)務(wù)邏輯相關(guān)的事件)后,需要顯示地拋出異常對(duì)象。例如,存款不足不可以取款,或用戶無(wú)合法的訪問(wèn)權(quán)限等廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院16throw語(yǔ)句Throw語(yǔ)句格式為:
throwThrowableObject
其中ThrowableObject必須是Throwable類或其子類的對(duì)象。例如:
ArithmeticExcetpione=newArithmeticException();throwe;
或
thrownewArithmeticException();廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院173.2.5創(chuàng)建異常類當(dāng)遇到任何標(biāo)準(zhǔn)異常類都不能恰當(dāng)?shù)孛枋銮宄?dāng)前問(wèn)題的時(shí)候,需要自定義異常類。由Exception類或者其子類中派生。只有兩個(gè)成員:缺省的構(gòu)造方法(無(wú)參數(shù)的構(gòu)造方法)和帶一個(gè)字符串類型的構(gòu)造方法。自定義異常類中通常沒(méi)有什么行為,僅用于標(biāo)識(shí)一種異常的對(duì)象廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院183.3異常與繼承對(duì)于子類中的重定義方法(1)子類中的重定義方法不可拋出父類方法未聲明的異常,除非這些異常是父類聲明的異常的子類型異常(2)子類中的重定義方法可以不拋出父類方法聲明的異常對(duì)于子類中的構(gòu)造方法(1)子類的構(gòu)造方法必須聲明拋出父類構(gòu)造方法聲明的異常,因?yàn)楦割悩?gòu)造方法總是會(huì)被顯式或隱式地被調(diào)用(2)子類的構(gòu)造方法可以引入任何新類型的異常廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院193.3異常與繼承異常說(shuō)明的多繼承多繼承結(jié)果:以所有父類及所有父接口聲明的異常交集作為規(guī)格說(shuō)明(1)子類中重定義的方法要么不聲明拋出任何異常(2)要么聲明的每一異常都必須與任一父類型的異常類型兼容廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院203.4.1異常處理機(jī)制的優(yōu)點(diǎn)1.Java通過(guò)面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常事件進(jìn)行分類,體現(xiàn)了良好的層次性,提供了良好的接口,這種機(jī)制對(duì)于具有動(dòng)態(tài)運(yùn)行特性的復(fù)雜程序提供了強(qiáng)有力的控制方式。2.Java的異常處理機(jī)制使得處理異常的代碼和“常規(guī)”代碼分開,減少了代碼的數(shù)量,增強(qiáng)了程序的可讀性。(大家可以比較一下C語(yǔ)言中用if語(yǔ)句來(lái)處理異常的情形,這時(shí)需要進(jìn)行一系列條件的判定)。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院21異常處理機(jī)制的優(yōu)點(diǎn)(續(xù))3.Java的異常處理機(jī)制使得異常事件可以沿調(diào)用棧自動(dòng)向上傳播,而不是C語(yǔ)言中通過(guò)函數(shù)的返回值來(lái)傳播,這樣可以傳遞更完善的信息并且簡(jiǎn)化代碼的編寫。4.由于把異常事件當(dāng)成對(duì)象來(lái)處理,利用類的層次性既可以把多個(gè)具有相同父類的異常統(tǒng)一處理,也可以區(qū)分不同的異常分別處理,使用非常靈活。廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院223.4.2異常處理機(jī)制的使用原則對(duì)非運(yùn)行時(shí)異常必須捕獲或聲明拋棄,而對(duì)運(yùn)行時(shí)異常則不必,可以交給Java運(yùn)行時(shí)系統(tǒng)來(lái)處理。對(duì)于自定義的異常類,通常把它作為類Exception子類,而不作為類Error的子類。
(1)因?yàn)镋rror類通常用于系統(tǒng)內(nèi)嚴(yán)重的硬件錯(cuò)誤。(2)并且在多數(shù)情況下,不要把自定
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代交通樞紐的鐵路貨運(yùn)效率優(yōu)化
- 深度解讀如何用云計(jì)算構(gòu)建高效智能制造平臺(tái)
- 國(guó)慶節(jié)巡航摩旅活動(dòng)方案
- 小學(xué)趣味運(yùn)動(dòng)會(huì)活動(dòng)方案策劃
- 2024年春七年級(jí)地理下冊(cè) 第九章 第二節(jié) 巴西說(shuō)課稿 (新版)新人教版
- 23 梅蘭芳蓄須說(shuō)課稿-2024-2025學(xué)年四年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版001
- 8 千年夢(mèng)圓在今朝(說(shuō)課稿)2023-2024學(xué)年部編版語(yǔ)文四年級(jí)下冊(cè)
- 5 協(xié)商決定班級(jí)事務(wù) 說(shuō)課稿-2024-2025學(xué)年道德與法治五年級(jí)上冊(cè)統(tǒng)編版
- 2023八年級(jí)英語(yǔ)上冊(cè) Module 9 Population Unit 3 Language in use說(shuō)課稿(新版)外研版
- 《10天然材料和人造材料》說(shuō)課稿-2023-2024學(xué)年科學(xué)三年級(jí)下冊(cè)青島版
- 文檔協(xié)同編輯-深度研究
- 七年級(jí)數(shù)學(xué)新北師大版(2024)下冊(cè)第一章《整式的乘除》單元檢測(cè)習(xí)題(含簡(jiǎn)單答案)
- 2024-2025學(xué)年云南省昆明市盤龍區(qū)高一(上)期末數(shù)學(xué)試卷(含答案)
- 五年級(jí)上冊(cè)寒假作業(yè)答案(人教版)
- 2024年財(cái)政部會(huì)計(jì)法律法規(guī)答題活動(dòng)題目及答案一
- 2025年中考語(yǔ)文復(fù)習(xí)熱搜題速遞之說(shuō)明文閱讀(2024年7月)
- 班組現(xiàn)場(chǎng)5S與目視化管理
- 和達(dá)投資集團(tuán)(杭州)有限公司招聘筆試沖刺題2025
- 政企單位春節(jié)元宵猜燈謎活動(dòng)謎語(yǔ)200個(gè)(含謎底)
- 綜治工作培訓(xùn)課件
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會(huì)考試題庫(kù)
評(píng)論
0/150
提交評(píng)論