版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章異常處理5.1異常的概念及處理辦法異常是指發(fā)生在正常情況以外的事件例如用戶輸入錯(cuò)誤、除數(shù)為零、需要的文件不存在、文件打不開、數(shù)組下標(biāo)越界、內(nèi)存不足等等。計(jì)算機(jī)系統(tǒng)對(duì)于異常的處理通常有兩種辦法:1.計(jì)算機(jī)系統(tǒng)本身直接檢測(cè)程序中的錯(cuò)誤,遇到錯(cuò)誤時(shí)終止程序執(zhí)行。2.由程序員在程序設(shè)計(jì)中加入處理異常的功能。異常處理的好處1.把各種不同的異常進(jìn)行分類,并提供了良好的接口。這種機(jī)制為復(fù)雜程序提供了強(qiáng)有力的控制方式。產(chǎn)生異常和處理異常由系統(tǒng)專門的程序加以控制,減少系統(tǒng)的開銷。2.不能確定和處理異常時(shí),可以不處理,而把問題提交上去。3.把錯(cuò)誤代碼從常規(guī)代碼中分離出來。4.把錯(cuò)誤傳播給調(diào)用堆棧。5.系統(tǒng)提供了對(duì)于一些無法預(yù)測(cè)的錯(cuò)誤的捕獲和處理。
異常處理機(jī)制的結(jié)構(gòu)1.由Java異常處理機(jī)制的預(yù)設(shè)處理方法來處理,即一旦程序發(fā)生異常,程序就會(huì)被終止并顯示一些錯(cuò)誤信息給用戶。2.使用Java語言提供的try-catch-finally語句自行處理異常。5.2異常類的繼承關(guān)系
在Java中,將異常情況分為Exception(異常)和Error(錯(cuò)誤)兩大類。Exception類解決由程序本身及環(huán)境所產(chǎn)生的異常,而Error類則處理較少發(fā)生的內(nèi)部系統(tǒng)錯(cuò)誤。Exception類異??梢员徊东@并進(jìn)行相應(yīng)處理,而對(duì)Error類異常,程序員通常無能為力,只能在其發(fā)生時(shí)由用戶按照系統(tǒng)提示關(guān)閉程序。在Java的異常處理機(jī)制中,引進(jìn)了很多用來描述和處理異常的類,稱為異常類。每個(gè)異常類反映一類運(yùn)行錯(cuò)誤,類定義中包含了該類異常的信息和對(duì)異常進(jìn)行處理的方法。常見異常的繼承關(guān)系java.util包中的異常java.io
包中的異常java.awt
包中的異常
包中的異常常見異常的繼承關(guān)系(續(xù))系統(tǒng)定義的運(yùn)行異常Error類系統(tǒng)定義的運(yùn)行異常Exception類5.3異常處理方法異常處理方法有兩種:一種方法是使用trycatchfinally結(jié)構(gòu)對(duì)異常進(jìn)行捕獲和處理;另外一種方法是通過throws和throw拋出異常Trycatchfinally結(jié)構(gòu):
try{
可能出現(xiàn)異常的程序代碼}catch(異常類名1異常對(duì)象名1){
異常類名1對(duì)應(yīng)的異常處理代碼}catch(異常類名2異常對(duì)象名2){
異常類名2對(duì)應(yīng)的異常處理代碼}…finally{必須執(zhí)行的代碼}(1)try語句
try語句用大括號(hào)指定了一段代碼,該代碼可能會(huì)拋出一個(gè)或多個(gè)異常,同時(shí),該段代碼也指定了它后面的catch語句所捕獲的異常的范圍。程序執(zhí)行過程中,如果該塊內(nèi)的代碼沒有出現(xiàn)任何異常,將正常執(zhí)行,后面的各catch塊不起任何作用。但如果該塊內(nèi)的代碼出現(xiàn)了異常,系統(tǒng)將終止try塊代碼的執(zhí)行,自動(dòng)跳轉(zhuǎn)到所發(fā)生的異常類對(duì)應(yīng)的catch塊中,執(zhí)行該塊中的代碼。(2)catch語句
java運(yùn)行時(shí),系統(tǒng)從上到下分別對(duì)每個(gè)catch語句處理的異常類型進(jìn)行檢測(cè),直到找到與類型相匹配的catch語句為止。類型匹配是指catch所處理的異常類型與生成的異常對(duì)象的類型完全一致或者是它的父類。(3)finally語句
try所限定的代碼中,當(dāng)拋出一個(gè)異常時(shí),其后的代碼不會(huì)被執(zhí)行。通過finally語句可以指定一塊代碼。無論try所指定的程序塊中拋出或不拋出異常,也無論catch語句的異常類型是否與所拋出的異常的類型一致,finally所指定的代碼都有被執(zhí)行,它提供了統(tǒng)一的出口。當(dāng)catch前面的try塊發(fā)生了一個(gè)異常,try-catch語句就會(huì)自動(dòng)在try塊后面的各個(gè)catch塊中,找出與該異常類相匹配的參數(shù)。當(dāng)參數(shù)符合以下3個(gè)條件之一時(shí),就認(rèn)為這個(gè)參數(shù)與產(chǎn)生的異常相匹配:(1)參數(shù)與產(chǎn)生的異常屬于一個(gè)類;(2)參數(shù)是產(chǎn)生的異常的超類;(3)參數(shù)是一個(gè)接口時(shí),產(chǎn)生的異常實(shí)現(xiàn)了這個(gè)接口。以下情況,finally子句將會(huì)被執(zhí)行:(1)try塊中的語句沒有產(chǎn)生異常;(2)try塊中的語句產(chǎn)生了異常,而且此異常在方法內(nèi)被捕獲;(3)try中產(chǎn)生了異常,而此異常在方法內(nèi)沒有被捕獲。拋出異常通常情況下,異常是由系統(tǒng)自動(dòng)捕獲的,但程序員也可以自己通過throw語句拋出異常。其語句格式為:
thrownew異常類名(信息)其中異常類名為系統(tǒng)異常類名或用戶自定義的異常類名,“信息”是可選信息。如果提供了該信息,toString()方法的返回值中將增加該信息內(nèi)容。聲明異常在有些情況下,一個(gè)方法并不需要處理它所生成的異常,而是向上傳遞,由調(diào)用它的方法來處理這些異常,這時(shí)就要用到throws子句。為了明確指出一個(gè)方法不捕獲某類異常,而讓調(diào)用該方法的其他方法捕獲該類異常,可以在聲明方法的時(shí)候,使用throws可選項(xiàng),拋出該類異常。格式為:[修飾符]返回值類型方法名[(參數(shù)表)]throws異常類型名{
聲明部分語句部分}(1)異常類型名是系統(tǒng)異常或用戶自定義的異常類型名;(2)與throw語句不同,throws選項(xiàng)僅需列出異常的類型名,而不能列出后面的括號(hào)及其追加的信息。自定義異常創(chuàng)建用戶自定義異常的語法格式是:
class自定義異常extends父類異常名
{……}classMyExceptionextendsException{
MyException(String
msg){super();}
MyException(){}}5.4正確地使用異常
(1)在可以使用簡(jiǎn)單的測(cè)試就能完成的檢查中,不要使用異常來代替它。(2)不要過細(xì)地使用異常。最好不要到處使用異常,更不要在循環(huán)體內(nèi)使用異常處理。(3)不要捕獲了一個(gè)異常而又不對(duì)它做任何處理。(4)將異常保留給方法的調(diào)用者并非不好的做法。所以,對(duì)于有些異常,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024新教材高中歷史 第六單元 世界殖民體系與亞非拉民族獨(dú)立運(yùn)動(dòng) 第12課 資本主義世界殖民體系的形成教學(xué)實(shí)錄 部編版必修中外歷史綱要下
- 安全生產(chǎn)檢查記錄表(范本)
- 關(guān)于旅游類實(shí)習(xí)報(bào)告模板八篇
- 2025屆高三英語一輪復(fù)習(xí)外刊語法填空-澳門回歸25周年+電影《小小的我》上映+哈爾濱冰雪大世界開園
- 關(guān)于人力資源的實(shí)習(xí)報(bào)告
- 2024年海鮮供應(yīng)商獨(dú)家合作協(xié)議
- 關(guān)于個(gè)人民警述職報(bào)告3篇
- 自我鑒定大學(xué)生500字
- 學(xué)生軍訓(xùn)心得體會(huì)合集15篇
- 心理學(xué)心得體會(huì)三篇
- 2025年上半年山西呂梁市柳林縣招聘畢業(yè)生70人到村(社區(qū))工作(第二批)重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 湖北省荊州市荊州八縣市區(qū)2023-2024學(xué)年高一上學(xué)期1月期末聯(lián)考生物學(xué)試題
- 2024年非煤礦山年終安全生產(chǎn)工作總結(jié)
- 2024北京海淀初一(上)期末語文試卷及答案
- CMQOE質(zhì)量組織卓越認(rèn)證經(jīng)理歷年考試真題試題庫(中文版)
- 公路工程施工組織設(shè)計(jì)(投標(biāo)用)
- 一年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題集錦
- 《預(yù)防性侵安全教育》主題班會(huì)教案
- 2024企業(yè)安全生產(chǎn)考試題庫(600題含答案)
- 2024年高考物理模擬卷(山東卷專用)(考試版)
- 中建施工電梯安拆專項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論