版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章異常處理5.1異常的概念及處理辦法異常是指發(fā)生在正常情況以外的事件例如用戶輸入錯誤、除數(shù)為零、需要的文件不存在、文件打不開、數(shù)組下標(biāo)越界、內(nèi)存不足等等。計算機(jī)系統(tǒng)對于異常的處理通常有兩種辦法:1.計算機(jī)系統(tǒng)本身直接檢測程序中的錯誤,遇到錯誤時終止程序執(zhí)行。2.由程序員在程序設(shè)計中加入處理異常的功能。異常處理的好處1.把各種不同的異常進(jìn)行分類,并提供了良好的接口。這種機(jī)制為復(fù)雜程序提供了強(qiáng)有力的控制方式。產(chǎn)生異常和處理異常由系統(tǒng)專門的程序加以控制,減少系統(tǒng)的開銷。2.不能確定和處理異常時,可以不處理,而把問題提交上去。3.把錯誤代碼從常規(guī)代碼中分離出來。4.把錯誤傳播給調(diào)用堆棧。5.系統(tǒng)提供了對于一些無法預(yù)測的錯誤的捕獲和處理。
異常處理機(jī)制的結(jié)構(gòu)1.由Java異常處理機(jī)制的預(yù)設(shè)處理方法來處理,即一旦程序發(fā)生異常,程序就會被終止并顯示一些錯誤信息給用戶。2.使用Java語言提供的try-catch-finally語句自行處理異常。5.2異常類的繼承關(guān)系
在Java中,將異常情況分為Exception(異常)和Error(錯誤)兩大類。Exception類解決由程序本身及環(huán)境所產(chǎn)生的異常,而Error類則處理較少發(fā)生的內(nèi)部系統(tǒng)錯誤。Exception類異??梢员徊东@并進(jìn)行相應(yīng)處理,而對Error類異常,程序員通常無能為力,只能在其發(fā)生時由用戶按照系統(tǒng)提示關(guān)閉程序。在Java的異常處理機(jī)制中,引進(jìn)了很多用來描述和處理異常的類,稱為異常類。每個異常類反映一類運行錯誤,類定義中包含了該類異常的信息和對異常進(jìn)行處理的方法。常見異常的繼承關(guān)系java.util包中的異常java.io
包中的異常java.awt
包中的異常
包中的異常常見異常的繼承關(guān)系(續(xù))系統(tǒng)定義的運行異常Error類系統(tǒng)定義的運行異常Exception類5.3異常處理方法異常處理方法有兩種:一種方法是使用trycatchfinally結(jié)構(gòu)對異常進(jìn)行捕獲和處理;另外一種方法是通過throws和throw拋出異常Trycatchfinally結(jié)構(gòu):
try{
可能出現(xiàn)異常的程序代碼}catch(異常類名1異常對象名1){
異常類名1對應(yīng)的異常處理代碼}catch(異常類名2異常對象名2){
異常類名2對應(yīng)的異常處理代碼}…finally{必須執(zhí)行的代碼}(1)try語句
try語句用大括號指定了一段代碼,該代碼可能會拋出一個或多個異常,同時,該段代碼也指定了它后面的catch語句所捕獲的異常的范圍。程序執(zhí)行過程中,如果該塊內(nèi)的代碼沒有出現(xiàn)任何異常,將正常執(zhí)行,后面的各catch塊不起任何作用。但如果該塊內(nèi)的代碼出現(xiàn)了異常,系統(tǒng)將終止try塊代碼的執(zhí)行,自動跳轉(zhuǎn)到所發(fā)生的異常類對應(yīng)的catch塊中,執(zhí)行該塊中的代碼。(2)catch語句
java運行時,系統(tǒng)從上到下分別對每個catch語句處理的異常類型進(jìn)行檢測,直到找到與類型相匹配的catch語句為止。類型匹配是指catch所處理的異常類型與生成的異常對象的類型完全一致或者是它的父類。(3)finally語句
try所限定的代碼中,當(dāng)拋出一個異常時,其后的代碼不會被執(zhí)行。通過finally語句可以指定一塊代碼。無論try所指定的程序塊中拋出或不拋出異常,也無論catch語句的異常類型是否與所拋出的異常的類型一致,finally所指定的代碼都有被執(zhí)行,它提供了統(tǒng)一的出口。當(dāng)catch前面的try塊發(fā)生了一個異常,try-catch語句就會自動在try塊后面的各個catch塊中,找出與該異常類相匹配的參數(shù)。當(dāng)參數(shù)符合以下3個條件之一時,就認(rèn)為這個參數(shù)與產(chǎn)生的異常相匹配:(1)參數(shù)與產(chǎn)生的異常屬于一個類;(2)參數(shù)是產(chǎn)生的異常的超類;(3)參數(shù)是一個接口時,產(chǎn)生的異常實現(xiàn)了這個接口。以下情況,finally子句將會被執(zhí)行:(1)try塊中的語句沒有產(chǎn)生異常;(2)try塊中的語句產(chǎn)生了異常,而且此異常在方法內(nèi)被捕獲;(3)try中產(chǎn)生了異常,而此異常在方法內(nèi)沒有被捕獲。拋出異常通常情況下,異常是由系統(tǒng)自動捕獲的,但程序員也可以自己通過throw語句拋出異常。其語句格式為:
thrownew異常類名(信息)其中異常類名為系統(tǒng)異常類名或用戶自定義的異常類名,“信息”是可選信息。如果提供了該信息,toString()方法的返回值中將增加該信息內(nèi)容。聲明異常在有些情況下,一個方法并不需要處理它所生成的異常,而是向上傳遞,由調(diào)用它的方法來處理這些異常,這時就要用到throws子句。為了明確指出一個方法不捕獲某類異常,而讓調(diào)用該方法的其他方法捕獲該類異常,可以在聲明方法的時候,使用throws可選項,拋出該類異常。格式為:[修飾符]返回值類型方法名[(參數(shù)表)]throws異常類型名{
聲明部分語句部分}(1)異常類型名是系統(tǒng)異常或用戶自定義的異常類型名;(2)與throw語句不同,throws選項僅需列出異常的類型名,而不能列出后面的括號及其追加的信息。自定義異常創(chuàng)建用戶自定義異常的語法格式是:
class自定義異常extends父類異常名
{……}classMyExceptionextendsException{
MyException(String
msg){super();}
MyException(){}}5.4正確地使用異常
(1)在可以使用簡單的測試就能完成的檢查中,不要使用異常來代替它。(2)不要過細(xì)地使用異常。最好不要到處使用異常,更不要在循環(huán)體內(nèi)使用異常處理。(3)不要捕獲了一個異常而又不對它做任何處理。(4)將異常保留給方法的調(diào)用者并非不好的做法。所以,對于有些異常,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)產(chǎn)品直銷運輸合作協(xié)議
- 農(nóng)業(yè)項目物流配送協(xié)議
- 劇院表演裝修合同模板
- 圖書館水電系統(tǒng)升級合同
- 倉儲物流天然氣配送合同
- 上海健身中心裝修合同要點
- 新建住宅裝修廢料清理
- 廢舊輪胎運輸處置合同
- 農(nóng)產(chǎn)品物流合作框架
- 2024年重慶市客運從業(yè)資格證模擬考試
- 自發(fā)性氣胸的護(hù)理
- 白市鎮(zhèn)小學(xué)常規(guī)管理督導(dǎo)評估自查報告(正稿)
- 雙減分層書面作業(yè)設(shè)計案例 方案 (含評價與反思)人教版七年級數(shù)學(xué)上冊第二章 整式的加減
- 2023年中國融通集團(tuán)招聘筆試題庫及答案解析
- 電線電纜穿管管徑選擇表
- GB 1903.33-2022食品安全國家標(biāo)準(zhǔn)食品營養(yǎng)強(qiáng)化劑5′-單磷酸胞苷(5′-CMP)
- GB/T 7909-2017造紙木片
- 關(guān)于變壓器溫控器的講解課件
- 主治醫(yī)師聘任述職報告課件
- 第一章理想氣體狀態(tài)方程物理化學(xué)課件要點
- 國家基層糖尿病防治管理手冊考核試題及答案
評論
0/150
提交評論