實(shí)驗(yàn)四異常處理和包裝類的編程練習(xí)_第1頁
實(shí)驗(yàn)四異常處理和包裝類的編程練習(xí)_第2頁
實(shí)驗(yàn)四異常處理和包裝類的編程練習(xí)_第3頁
實(shí)驗(yàn)四異常處理和包裝類的編程練習(xí)_第4頁
實(shí)驗(yàn)四異常處理和包裝類的編程練習(xí)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論