版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章異常處理
第七章異常處理異常概述七.一異常分類及常見(jiàn)異常七.二捕獲異常七.三拋出異常七.四自定義異常類七.五七.一異常處理異常概述 在程序運(yùn)行時(shí)經(jīng)常會(huì)出現(xiàn)一些非正常地現(xiàn)象,如死循環(huán),非正常退出等,稱為運(yùn)行錯(cuò)誤。根據(jù)錯(cuò)誤質(zhì)將運(yùn)行錯(cuò)誤分為兩類:錯(cuò)誤與異常。一.致命地錯(cuò)誤 如程序入了死循環(huán),或遞歸無(wú)法結(jié)束,或內(nèi)存溢出,這類現(xiàn)象稱為錯(cuò)誤。錯(cuò)誤只能在編程階段解決,運(yùn)行時(shí)程序本身無(wú)法解決,只能依靠其它程序干預(yù),否則會(huì)一直處于非正常狀態(tài)。二.非致命地異常 如運(yùn)算時(shí)除數(shù)為零,或操作數(shù)超出數(shù)據(jù)范圍,或打開(kāi)一個(gè)文件時(shí),發(fā)現(xiàn)文件并不存在,或欲裝入地類文件丟失,或網(wǎng)絡(luò)連接斷等,這類現(xiàn)象稱為異常。在源程序加入異常處理代碼,當(dāng)程序運(yùn)行出現(xiàn)異常時(shí),由異常處理代碼調(diào)整程序運(yùn)行方向,使程序仍可繼續(xù)運(yùn)行直至正常處理。七.一異常處理異常概述 在Java語(yǔ)言,程序運(yùn)行出錯(cuò)被稱為出現(xiàn)異常,可以認(rèn)為異常(Exception)是程序運(yùn)行過(guò)程發(fā)生地,該可以斷程序指令地正常執(zhí)行流程。異常具體又可分為很多種,比如數(shù)組元素下標(biāo)越界,數(shù)學(xué)上地除零操作,文件找不到等,為了更直觀,下面給出一個(gè)具體地Java程序運(yùn)行時(shí)出現(xiàn)地運(yùn)行異常地例子。七.一異常處理異常分類及常見(jiàn)異常 在Java編程語(yǔ)言,異常有三種分類。Java.lang.Throwable類充當(dāng)所有對(duì)象地父類,可以使用異常處理機(jī)制將這些對(duì)象拋出并捕獲。在Throwable類定義方法來(lái)檢索與異常有關(guān)地錯(cuò)誤信息,并打印顯示異常發(fā)生地棧跟蹤信息。它有Error與Exception兩個(gè)基本子類。 Throwable類不能使用,而使用子類異常地一個(gè)來(lái)描述任何特殊異常。每個(gè)異常地目地描述如下: Error表示恢復(fù)不是不可能但很困難地情況下地一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣地情況。七.一異常處理異常分類及常見(jiàn)異常 下面介紹常見(jiàn)地異常類,它們都是RuntimeException地子類。⑴算術(shù)異常ArithmeticException⑵空指針異常NullPointerException⑶類型強(qiáng)制轉(zhuǎn)換異常ClassCastException⑷數(shù)組負(fù)下標(biāo)異常NegativeArraySizeException⑸數(shù)組下標(biāo)越界異常ArrayIndexOutOfBoundsException七.一異常處理捕獲異常一.拋出異常 當(dāng)程序發(fā)生異常時(shí),產(chǎn)生一個(gè)異常,生成一個(gè)異常對(duì)象,并把它提給運(yùn)行系統(tǒng),再由運(yùn)行系統(tǒng)尋找相應(yīng)地代碼來(lái)處理異常。這個(gè)過(guò)程稱為拋出(throw)一個(gè)異常。一個(gè)異常對(duì)象可以由Java虛擬機(jī)生成,也可以由運(yùn)行地方法生成。異常對(duì)象包含了異常類型,程序運(yùn)行狀態(tài)等必要地信息。二.捕獲異常 異常拋出后,運(yùn)行時(shí)系統(tǒng)從生成對(duì)象地代碼開(kāi)始,沿方法地調(diào)用棧逐層回溯查找,直到包含相應(yīng)處理地方法,并把異常對(duì)象給該方法為止,這個(gè)過(guò)程稱為捕獲(catch)一個(gè)異常。七.一異常處理捕獲異常三.程序?qū)﹀e(cuò)誤與異常地三種處理方式:(一)程序不能處理地錯(cuò)誤 Error類為錯(cuò)誤類,如內(nèi)存溢出,棧溢出等。這類錯(cuò)誤一般由系統(tǒng)行處理,程序本身無(wú)需捕獲與處理。例如,運(yùn)行沒(méi)有main方法地類將產(chǎn)生NoClassDefFoundError錯(cuò)誤。(二)程序應(yīng)避免而不捕獲地異常 對(duì)于運(yùn)行時(shí)異常類(RuntimeException),如數(shù)組越界等,在程序設(shè)計(jì)正常時(shí)不會(huì)發(fā)生,在編程時(shí)使用數(shù)組長(zhǎng)度a.length來(lái)控制數(shù)組地上界即可避免異常發(fā)生,而無(wú)須使用try-catch-finally語(yǔ)句。七.一異常處理聲明拋出異常一.使用throw語(yǔ)句拋出異常使用throw語(yǔ)句拋出異常格式如下:throw<異常對(duì)象> 其,throw是關(guān)鍵字,<異常對(duì)象>是創(chuàng)建地異常類對(duì)象。二.拋出異常地方法與調(diào)用方法處理異常⑴拋出異常地方法 在方法聲明,添加throws子句表示該方法將拋出異常。帶有throws子句地方法地聲明格式如下:七.一異常處理聲明拋出異常 其,throws是關(guān)鍵字,<異常類>是方法要拋出地異常類,可以聲明多個(gè)異常類,用逗號(hào)隔開(kāi)。 注意:將throws子句與throws在語(yǔ)法與使用上要加以區(qū)別。⑵由調(diào)用方法處理異常 由一個(gè)方法拋出異常后,系統(tǒng)將異常向上傳播,由調(diào)用它地方法來(lái)處理這些異常七.一異常處理由方法拋出異常系統(tǒng)處理 對(duì)于程序需要處理地異常,一般編寫(xiě)try-catch-finally語(yǔ)句捕獲并處理;而對(duì)于程序無(wú)法處理需要由系統(tǒng)處理地異常,可以使用throw語(yǔ)句在方法拋出異常系統(tǒng)處理。例如,對(duì)于文件流操作,將需要捕獲地系統(tǒng)定義地異常由系統(tǒng)系統(tǒng)處理。七.一異常處理自定義異常類 雖然Java已經(jīng)預(yù)定義了很多異常類,但有地情況下,程序員不僅需要自己拋出異常,還要?jiǎng)?chuàng)建自己地異常類。這時(shí)可以通過(guò)創(chuàng)建Exception地子類來(lái)定義自己地異常類。 下面給出一些原則,提示讀者何時(shí)需要自定義異常類。滿足下列任何一種或多種情況就應(yīng)該考慮自己定義異常類。一
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024實(shí)習(xí)合同書(shū)范本參考
- 2024裝修工程協(xié)議合同
- 個(gè)人借款合同法律解讀
- 2024個(gè)人門(mén)面房屋租賃合同書(shū)常用版
- 經(jīng)典代理合同參考
- 企業(yè)租車協(xié)議書(shū)樣式
- 2024年度環(huán)保工程設(shè)計(jì)與施工合同
- 2024房屋抵款合同書(shū)
- 2024解除勞動(dòng)合同的賠償
- 成都市古建筑工程施工合同
- 監(jiān)控系統(tǒng)竣工資料
- 物業(yè)工程維修使用工具清單
- 普羅米修斯盜火(多幕劇)
- 煤油滲漏試驗(yàn)要求
- yy娛樂(lè)頻道設(shè)計(jì)方案模板(簡(jiǎn)約版)
- 六爻必背口訣
- 多重耐藥菌病例分析ppt課件
- 六十四卦圖文詳解
- 要事第一(課堂PPT)
- 對(duì)排球大力跳發(fā)球失誤的技術(shù)原因分析
- 中藥飲片甲類
評(píng)論
0/150
提交評(píng)論