版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章異常處理第6章異常處理ppt課件(全)本章學(xué)習(xí)目標(biāo)了解異常和異常分類(lèi)了解Java異常處理機(jī)制和異常類(lèi)掌握try/catch/finally語(yǔ)句處理異常的方式以及如何聲明異常了解自定義異常第6章異常處理ppt課件(全)任務(wù)1:了解什么是異?!救蝿?wù)內(nèi)容】了解什么是異?!灸芰δ繕?biāo)】了解什么是異常了解異常類(lèi)和錯(cuò)誤類(lèi)的區(qū)別6.1了解異常第6章異常處理ppt課件(全)
我們總是試圖避免在軟件程序中錯(cuò)誤的發(fā)生,但是百分之百?zèng)]有錯(cuò)誤的程序是不存在的。無(wú)論怎樣,如果我們能適當(dāng)?shù)奶幚礤e(cuò)誤,將會(huì)極大的改善程序的可讀性、可靠性以及可維護(hù)性。觀察下面的實(shí)例:ExceptionDemo.java
程序在運(yùn)行過(guò)程中發(fā)生異?;蝈e(cuò)誤后,如果不做任何處理,程序就會(huì)被終止,為了保證程序有效地執(zhí)行,就需要對(duì)發(fā)生的異常或錯(cuò)誤進(jìn)行相應(yīng)處理。在Java程序中,異常處理允許程序捕獲異常,處理它們,然后程序繼續(xù)執(zhí)行,它是分層把關(guān),因此,錯(cuò)誤情況不會(huì)介入到程序的正常流程中。
第6章異常處理ppt課件(全)Java中異常類(lèi)的繼承關(guān)系ObjectThrowableErrorExceptionAWTExceptionIOExceptionRuntimeException第6章異常處理ppt課件(全)Error類(lèi)對(duì)象:由Java虛擬機(jī)生成并拋出;這樣的異常超出了程序可控制的范圍(硬件故障、內(nèi)存泄露、死循環(huán)等)。在Java編程語(yǔ)言中,錯(cuò)誤類(lèi)定義被認(rèn)為是不能恢復(fù)的嚴(yán)重錯(cuò)誤條件。在大多數(shù)情況下,當(dāng)遇到這樣的錯(cuò)誤時(shí),建議讓程序中斷。Exception類(lèi)對(duì)象:由應(yīng)用程序處理或拋出;該類(lèi)異常定義了程序中可能遇到的輕微的錯(cuò)誤條件,可編寫(xiě)代碼來(lái)處理異常并繼續(xù)執(zhí)行程序,而不是讓程序中斷。(想打開(kāi)的文件不存在;網(wǎng)絡(luò)連接中斷;受控操作數(shù)超出預(yù)定范圍;正在裝載的類(lèi)文件丟失)。第6章異常處理ppt課件(全)
“異?!边@個(gè)詞有“對(duì)此感到意外”的含義。出現(xiàn)異常的代碼部分不清楚該如何處理,但也知道不能置之不理。這段程序需要停下來(lái),看看是不是別的地方的程序能夠處理這個(gè)問(wèn)題。只是在當(dāng)前的環(huán)境下沒(méi)有足夠的信息來(lái)解決這個(gè)問(wèn)題,所以就把問(wèn)題提交到一個(gè)更高級(jí)別的環(huán)境中。程序中的錯(cuò)誤可能來(lái)自于編譯錯(cuò)誤和運(yùn)行錯(cuò)誤。編譯錯(cuò)誤是由于所編寫(xiě)的程序存在語(yǔ)法問(wèn)題,未能通過(guò)由源代碼到目標(biāo)代碼的編譯過(guò)程而產(chǎn)生的錯(cuò)誤,它將由語(yǔ)言的編譯系統(tǒng)負(fù)責(zé)檢測(cè)和報(bào)告;運(yùn)行錯(cuò)誤是在程序的運(yùn)行過(guò)程中產(chǎn)生的錯(cuò)誤。第6章異常處理ppt課件(全)任務(wù)2:了解異常的分類(lèi)【任務(wù)內(nèi)容】了解異常的分類(lèi)【能力目標(biāo)】掌握異常類(lèi)6.1了解異常第6章異常處理ppt課件(全)描述了Java虛擬機(jī)內(nèi)部錯(cuò)誤及資源耗盡的情形,應(yīng)用程序不應(yīng)該拋出這種類(lèi)型的對(duì)象(一般是由虛擬機(jī)拋出)。包括RuntimeException和其他非RuntimeException第6章異常處理ppt課件(全)任務(wù)3:了解異常類(lèi)常用的方法【任務(wù)內(nèi)容】了解異常類(lèi)常用的方法【能力目標(biāo)】掌握異常類(lèi)常用的方法6.1了解異常第6章異常處理ppt課件(全)publicclassExceptionDemo{ publicstaticvoidmain(String[]args){ StringstrPrice="20"; try{//進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換時(shí),parseFloat方法有可能出現(xiàn)異常
floatfprice=Float.parseFloat(strPrice); }catch(NumberFormatExceptionnfe){ System.err.println("Exception:"+nfe.getMessage()); System.err.println("Exception:"+nfe.toString());
nfe.printStackTrace(); } }}第6章異常處理ppt課件(全)任務(wù)4:了解異常的捕獲【任務(wù)內(nèi)容】了解異常的拋出和捕獲【能力目標(biāo)】掌握異常的拋出和捕獲6.1了解異常第6章異常處理ppt課件(全)對(duì)于異常有三種處理方法:(1)捕獲異常。通過(guò)try...catch語(yǔ)句,在catch子句中編寫(xiě)處理異常的語(yǔ)句。(2)拋出異常。通過(guò)throw語(yǔ)句,拋出一個(gè)異常對(duì)象。對(duì)于系統(tǒng)定義的異常類(lèi),Java程序在運(yùn)行過(guò)程中會(huì)自動(dòng)生成異常類(lèi)對(duì)象并自動(dòng)拋出;對(duì)于用戶(hù)自定義異常類(lèi)則要手動(dòng)生成異常類(lèi)對(duì)象然后再手動(dòng)拋出提交到運(yùn)行時(shí)系統(tǒng)。(3)聲明異常。就是在方法名后面加上throwsExceptionname。方法本身只是聲明拋出異常,由函數(shù)的調(diào)用者來(lái)捕獲異常。第6章異常處理ppt課件(全)任務(wù)5:掌握try...catch語(yǔ)句【任務(wù)內(nèi)容】掌握try...catch語(yǔ)句【能力目標(biāo)】掌握try...catch語(yǔ)句范例:ExceptionDemo2.java6.2try…catch語(yǔ)句第6章異常處理ppt課件(全)Try-catch-finally語(yǔ)法格式try{調(diào)用有可能產(chǎn)生異常的方法及其他java語(yǔ)句;}catch(異常類(lèi)名異常對(duì)象名){異常處理;}catch(異常類(lèi)名異常對(duì)名){異常處理;}......finally{最終處理;}第6章異常處理ppt課件(全)publicclassTryCatchFinally{ publicstaticvoidmain(Stringargs[]) {Method(0);Method(1); Method(2); } staticvoidMethod(inta) { System.out.println("調(diào)用方法Method("+a+")"); try {if(a==0) {System.out.println("\t沒(méi)有異常產(chǎn)生,正常退出。"); return; } elseif(a==1) {inti=0;intj=4/i;} elseif(a==2) {intiArray[]=newint[4];iArray[4]=3;} }第6章異常處理ppt課件(全)catch(ArithmeticExceptione) {System.out.println("\t捕獲異常:"+e); }catch(ArrayIndexOutOfBoundsExceptione) {System.out.println("\t捕獲異常:"+e.getMessage());}catch(Exceptione) {System.out.println("\t產(chǎn)生的異常已被處理,該catch塊不會(huì)被執(zhí)行。"); }finally {System.out.println("\tfinally塊總是被執(zhí)行。"); }}}注意:在使用多重catch語(yǔ)句塊時(shí),異常子類(lèi)一定要位于異常父類(lèi)之前,否則,控制權(quán)將永遠(yuǎn)傳不到子類(lèi),將產(chǎn)生一個(gè)不能執(zhí)行的代碼,就會(huì)發(fā)生編譯錯(cuò)誤。
第6章異常處理ppt課件(全)任務(wù)6:了解Java異常處理機(jī)制Java程序在執(zhí)行中,如果方法中的一個(gè)語(yǔ)句拋出一個(gè)沒(méi)有在相應(yīng)的try…catch塊中處理的異常,那么這個(gè)異常就被拋出到調(diào)用方法中。如果異常也沒(méi)有在調(diào)用方法中被處理,它就被拋出到該方法的調(diào)用程序。這個(gè)過(guò)程要一直延續(xù)到異常被處理。如果異常到這時(shí)還沒(méi)被處理,它便回到main(),如果main()不處理它,那么,該異常就異常地中斷程序。6.2try…catch語(yǔ)句第6章異常處理ppt課件(全)任務(wù)7:聲明拋出異?!救蝿?wù)內(nèi)容】聲明拋出異?!灸芰δ繕?biāo)】掌握拋出異常的方法范例:ThrowsException.java6.3throws關(guān)鍵字第6章異常處理ppt課件(全)程序員可以做滿(mǎn)足該要求的兩件事:第一,通過(guò)將try{}catch{}塊納入其代碼中,在這里捕獲給被命名為屬于某個(gè)超類(lèi)的異常,并調(diào)用方法處理它。即使catch塊是空的,這也算是處理情況。第二,讓被調(diào)用的方法表示它將不處理異常,而且該異常將被拋回到它所遇到的調(diào)用方法中。它是通過(guò)用throws子句標(biāo)記的該調(diào)用方法的聲明來(lái)實(shí)現(xiàn)的。使用throws關(guān)鍵字語(yǔ)法:返回類(lèi)型方法名(參數(shù)列表)throws異常類(lèi)名1,異常類(lèi)名2,異常類(lèi)名3第6章異常處理ppt課件(全)任務(wù)8:自定義異常類(lèi)【任務(wù)內(nèi)容】采用繼承Throwable類(lèi)方式,新建自定義異常類(lèi)【能力目標(biāo)】掌握自定義異常類(lèi)的基本結(jié)構(gòu)學(xué)會(huì)如何編寫(xiě)一個(gè)自定義異常類(lèi)【任務(wù)分析】要完成這個(gè)任務(wù),首先通過(guò)class關(guān)鍵字聲明一個(gè)自定義異常類(lèi),接著在自定義異常類(lèi)名的后面用extends關(guān)鍵字,讓其繼承Throwable這個(gè)父類(lèi)即可。6.4自定義異常與throw關(guān)鍵字第6章異常處理ppt課件(全)class自定義異常extends父異常類(lèi)名
{類(lèi)體;
}例如:classNumberRangeExceptionextendsException{ NumberRangeException(Stringmsg) { super(msg); } }第6章異常處理ppt課件(全)范例:創(chuàng)建自定義異常類(lèi),采用繼承Throwable類(lèi)MyFirstException.java范例:用繼承Exception類(lèi)方式,新建自定義異常類(lèi)MySecondException.java
第6章異常處理ppt課件(全)任務(wù)9:拋出異常的方法——throw關(guān)鍵字【任務(wù)內(nèi)容】
使用throw關(guān)鍵字在方法中拋出異?!灸芰δ繕?biāo)】學(xué)會(huì)使用throw關(guān)鍵字掌握捕獲異常,并進(jìn)行相應(yīng)的異常處理【任務(wù)分析】程序在運(yùn)行中會(huì)出現(xiàn)很多種情況,這時(shí)程序往往需要根據(jù)不同的情況,拋出指定的異常類(lèi)對(duì)象,在當(dāng)前方法中或者是當(dāng)前方法的調(diào)用者要對(duì)其進(jìn)行相應(yīng)的處理,這時(shí),就需要用到throw關(guān)鍵字,用它拋出指定的異常類(lèi)對(duì)象。范例:ThrowException.java6.4自定義異常與throw關(guān)鍵字第6章異常處理ppt課件(全)任務(wù)10:了解finally關(guān)鍵字【任務(wù)內(nèi)容】了解finally關(guān)鍵字【能力目標(biāo)】了解finally語(yǔ)句塊的作用范例:ExceptionDemo3.javafinally語(yǔ)句的主要作用是在try或catch轉(zhuǎn)到其他部分前做的一些“善后”工作。例如:關(guān)閉打開(kāi)的文件,釋放連接、內(nèi)存等系統(tǒng)資源。finally語(yǔ)句的執(zhí)行是一種無(wú)條件的操作,無(wú)論在哪種異常下都會(huì)執(zhí)行,即使try或者catch語(yǔ)句塊中有continue、return、break等關(guān)鍵字,或者throw語(yǔ)句,程序都會(huì)執(zhí)行finally語(yǔ)句。注意:終止程序的System.exit(0)方法在try語(yǔ)句塊中被執(zhí)行時(shí),這是finally語(yǔ)句不被執(zhí)行的唯一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年通信設(shè)備采購(gòu)與維護(hù)合同2篇
- 電梯安裝工程2025年度技術(shù)咨詢(xún)合同6篇
- 二零二五年度論壇活動(dòng)策劃服務(wù)合同模板6篇
- 二零二五版搬家服務(wù)及家居清潔維護(hù)合同3篇
- 二零二五年度廢鋼市場(chǎng)供應(yīng)與環(huán)保處理服務(wù)合同3篇
- 二零二五版房屋買(mǎi)賣(mài)及鄰里關(guān)系協(xié)調(diào)服務(wù)合同3篇
- 二零二五年度股東干股合作企業(yè)社會(huì)責(zé)任履行合同3篇
- 幼兒園2025年度食品供應(yīng)合同2篇
- 二零二五版租賃房屋改造裝修合同3篇
- 二零二五年酒店股權(quán)分割與資產(chǎn)重組咨詢(xún)合同3篇
- 2023社會(huì)責(zé)任報(bào)告培訓(xùn)講稿
- 2023核電廠常規(guī)島及輔助配套設(shè)施建設(shè)施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對(duì)聯(lián)大全新春對(duì)聯(lián)集錦
- 表B. 0 .11工程款支付報(bào)審表
- 警務(wù)航空無(wú)人機(jī)考試題庫(kù)及答案
- 空氣自動(dòng)站儀器運(yùn)營(yíng)維護(hù)項(xiàng)目操作說(shuō)明以及簡(jiǎn)單故障處理
- 新生兒窒息復(fù)蘇正壓通氣課件
- 法律顧問(wèn)投標(biāo)書(shū)
- 班主任培訓(xùn)簡(jiǎn)報(bào)4篇(一)
- 成都市數(shù)學(xué)八年級(jí)上冊(cè)期末試卷含答案
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專(zhuān)家共識(shí)
評(píng)論
0/150
提交評(píng)論