版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)四 異常處理和包裝類的編程練習(xí)實(shí)驗(yàn)?zāi)康?了解異常類的作用,掌握對異常的捕獲和處理方式,了解包裝類的作用和特點(diǎn)以及基本數(shù)據(jù)類型與包裝類的對應(yīng)關(guān)系,掌握包裝類的使用方法。實(shí)驗(yàn)要求1、 理解系統(tǒng)異常處理的機(jī)制;2、 創(chuàng)建自定義的異常類型;3、 了解基本數(shù)據(jù)類型和包裝類的對應(yīng)關(guān)系;4、 理解基本數(shù)據(jù)類型與包裝類之間的區(qū)別和聯(lián)系;5、 掌握基本數(shù)據(jù)類型與包裝類之間相互轉(zhuǎn)換的方法。實(shí)驗(yàn)內(nèi)容1、 使用trycatch語句處理異常1.1、 異常類型匹配的處理方式(1) 程序功能:在程序中主動產(chǎn)生一個(gè)ArithmeticException 類型被0 除的異常, 并用catch 語句捕獲這個(gè)異常。最后通過Ar
2、ithmeticException 類的對象e 的方法getMessage 給出異常的具體類型并顯示出來。(2) 程序源代碼如下。 public class EXP5_1 public static void main(String arg3) System.out.println("這是一個(gè)異常處理的例子n"); try int i=10; i /=0; catch (ArithmeticException e) System.out.println("異常是:"+e.getMessage(); finally System.out.println(&
3、quot;finally 語句被執(zhí)行"); (3) 編譯并運(yùn)行,結(jié)果如圖5.1所示。圖 5.11.2、 異常類型不匹配的處理方式(1) 程序源代碼如下。 public class EXP5_2 public static void main(String args) System.out.println(“這是一個(gè)異常處理的例子n”); try int i=10; i /=0; catch (IndexOutOfBoundsException e) System.out.println("異常是:"+e.getMessage(); finally System.o
4、ut.println("finally 語句被執(zhí)行"); (2) 編譯并運(yùn)行,結(jié)果如圖5.2所示。圖 5.2 因?yàn)镋XP5_2 程序試圖捕獲一個(gè)異常類為IndexOutOfBoundsException 的異常,但發(fā)生的異常卻是ArithmeticException 類,所以,程序可以通過編譯但在運(yùn)行時(shí),系統(tǒng)會給出異常報(bào)告:報(bào)告所發(fā)生的但沒有被捕獲的異常。不過在此之前,其它語句和finally 語句將會被執(zhí)行。1.3、 包含多個(gè)catch子句的異常處理方式(1) 程序功能:在try 子句中設(shè)計(jì)兩個(gè)可能出現(xiàn)的異常,當(dāng)a 為0 時(shí)會發(fā)生異常。另外一個(gè)是肯定的異常,因?yàn)閿?shù)組c 的
5、長度為1,定義c42是為法的。通過兩個(gè)catch 子句分別來捕獲異常。(2) 程序源代碼如下。 public class EXP5_3 public static void main(String args) try int a=args.length; System.out.println("na = "+a); int b=42/a; int c=1; c42=99; catch (ArithmeticException e) System.out.println("發(fā)生了被 0 除:"+e); catch (ArrayIndexOutOfBound
6、sException e) System.out.println("數(shù)組下標(biāo)越界:"+e); (3) 編譯并運(yùn)行,結(jié)果如圖5.3所示。圖 5.32、 使用throw語句拋出異常 在上面的實(shí)驗(yàn)中,可以發(fā)現(xiàn),異常對象是Java 運(yùn)行時(shí)由系統(tǒng)拋出的。拋出異常也可以通過使用throw 語句實(shí)現(xiàn)。throw 是Java 語言的關(guān)鍵字,用來告知編譯器此處要發(fā)生一個(gè)異常。throw 后面要跟一個(gè)新創(chuàng)建的異常類對象,用于指出異常的名稱和類型。(1) 程序源代碼如下。 public class EXP5_4 static void throwProcess() try throw new N
7、ullPointerException("空指針異常"); catch (NullPointerException e) System.out.println("n在throwProcess方法中捕獲"+e.getMessage(); throw e; public static void main(String args) try throwProcess(); catch (NullPointerException e) System.out.println("再次捕獲:"+e); (2) 編譯并運(yùn)行,結(jié)果如圖5.4所示。圖 5.
8、43、 使用throws語句 throws 子句一般用來表明在使用該方法時(shí)可能拋出異常但不捕獲的異常。異常由系統(tǒng)來處理。throws 子句也可以指出拋出異常是RuntimeException 或自定義異常類,即異常的類型,以便準(zhǔn)備調(diào)用其它方法捕獲它,這種情況一般需要兩個(gè)方法來分別處理拋出異常和處理異常。(1) 程序功能:在這個(gè)程序中的mathod 方法中使用throws 子句拋出異常,在main 方法中捕獲處理異常。(2) 程序源代碼如下。 import java.io.*; public class EXP5_5 static void mathod() throws IllegalAcce
9、ssException System.out.println("n 在 mathod 中拋出一個(gè)異常"); throw new IllegalAccessException(); public static void main(String args) try mathod(); catch (IllegalAccessException e) System.out.println("在 main 中捕獲異常:"+e); (3) 編譯并運(yùn)行,結(jié)果如圖5.5所示。圖 5.54、 使用finally子句 當(dāng)一個(gè)異常被拋出時(shí),程序的執(zhí)行流程就不再是連續(xù)的了,會
10、跳過某些語句,甚至?xí)捎跊]有與之匹配的catch 子句而過早地返回,結(jié)束程序的運(yùn)行。為了確保一段代碼不管發(fā)生什么異常都能被執(zhí)行,可以使用finally 子句。每個(gè)try 語句至少都要有一個(gè)與之相配的catch 或finally 子句。 從一個(gè)方法中返回到調(diào)用它的另外一個(gè)方法,可以通過return 語句或通過一個(gè)沒有被捕獲的異常,但finally 子句總是在返回前被執(zhí)行。(1) 程序功能:在類EXP5_6 的mathodA 方法中使用try 子句捕獲異常,使用finally 子句處理異常。(2) 程序源代碼如下。 class EXP5_6 static void mathodA() try Sy
11、stem.out.println("nmathodA 拋出一個(gè)異常"); throw new RuntimeException(); finally System.out.println("執(zhí)行 mathodA 的 finally"); static void mathodB() try System.out.println("mathodB 正常返回"); return; finally System.out.println("執(zhí)行 mathodB 的 finally"); public static void
12、main(String args) try mathodA(); catch (Exception e) mathodB(); (3) 編譯并運(yùn)行,結(jié)果如圖5.6所示。圖5.65、 創(chuàng)建自定義的異常類(1) 程序功能:通過繼承Exception 異常類創(chuàng)建一個(gè)自定義異常類MyException,然后再創(chuàng)建一個(gè)主類EXP5_7 使用自定義異常類MyException。(2) 程序源代碼如下。 class MyException extends Exception private int x; MyException(int a) x=a; public String toString() ret
13、urn "自定義異常類MyException" public class EXP5_7 static void mathod(int a) throws MyException System.out.println("t 此處引用 mathod ("+a+")"); if (a>10) throw new MyException(a); / 主動拋出MyException System.out.println("正常返回"); public static void main(String args) try System.out.println("n 進(jìn)入監(jiān)控區(qū),執(zhí)行可能發(fā)生異常的程序段"); mathod(8); mathod(20); mathod(6); catch (MyException e) S
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年房屋交易合同模板大全
- 2024年技術(shù)交易合同登記
- 2024年新修訂版回遷房買賣合同樣本
- 2024年教室借用協(xié)議
- 2024年市場調(diào)研與分析報(bào)告訂購協(xié)議
- 2024年戊方提供環(huán)保解決方案合同
- 2024年技術(shù)研發(fā)合同標(biāo)的、研發(fā)內(nèi)容與技術(shù)成果分配
- 2024年建筑幕墻及光伏系統(tǒng)安裝合同
- DB4117T 242-2019 小麥全程機(jī)械化作業(yè)質(zhì)量標(biāo)準(zhǔn)
- DB4117T 169.28-2023 動物疫病流行病學(xué)調(diào)查技術(shù)規(guī)范 第28部分:牛羊日本血吸蟲病
- 骨髓腔內(nèi)輸液(IOI)技術(shù)
- 建筑幕墻工程(鋁板、玻璃、石材)監(jiān)理實(shí)施細(xì)則(全面版)
- 小學(xué)數(shù)學(xué)與思政融合課教學(xué)設(shè)計(jì)
- 體育公園運(yùn)營管理方案
- 休閑生態(tài)農(nóng)業(yè)觀光園建設(shè)項(xiàng)目財(cái)務(wù)分析及效益評價(jià)
- 江西省南昌市民德學(xué)校2023-2024學(xué)年八年級上學(xué)期期中數(shù)學(xué)試題
- 國際金融(英文版)智慧樹知到期末考試答案2024年
- 2024年《藥物臨床試驗(yàn)質(zhì)量管理規(guī)范》(GCP)網(wǎng)絡(luò)培訓(xùn)題庫
- 遼寧省名校聯(lián)盟2024屆高三下學(xué)期3月份聯(lián)合考試化學(xué)
- 2023年度學(xué)校食堂每月食品安全調(diào)度會議紀(jì)要
- 建筑門窗、幕墻安裝工人安全技術(shù)操作規(guī)程
評論
0/150
提交評論