實(shí)驗(yàn)五---異常處理(共6頁(yè))_第1頁(yè)
實(shí)驗(yàn)五---異常處理(共6頁(yè))_第2頁(yè)
實(shí)驗(yàn)五---異常處理(共6頁(yè))_第3頁(yè)
實(shí)驗(yàn)五---異常處理(共6頁(yè))_第4頁(yè)
實(shí)驗(yàn)五---異常處理(共6頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)五 異常處理一、實(shí)驗(yàn)?zāi)康?. 學(xué)會(huì)利用Try-catch-finally語(yǔ)句來(lái)捕獲和處理異常;2. 掌握自定義異常類的方法。二、實(shí)驗(yàn)要求1. 通過(guò)編程理解系統(tǒng)異常處理的機(jī)制和創(chuàng)建自定義異常的方法。2. 掌握基礎(chǔ)類。三、實(shí)驗(yàn)內(nèi)容(一)異常處理機(jī)制1. 編寫使用 trycatch 語(yǔ)句處理異常的程序文件Demo4_1.java,源代碼如下: public class Demo3_1 public static void main(String arg3) System.out.println("這是一個(gè)異常處理的例子n"); try int i=1

2、0; i /=0; catch (ArithmeticException e) System.out.println("異常是:"+e.getMessage(); finally System.out.println("finally 語(yǔ)句被執(zhí)行"); l 編譯并運(yùn)行程序。 注意:如果在 catch 語(yǔ)句中聲明的異常類是 Exception,catch 語(yǔ)句也能正確地捕獲,這是因?yàn)?Exception是ArithmeticException的父類。如果不能確定會(huì)發(fā)生哪種情況的異常,那么最好指定catch的參數(shù)為 Exception,即說(shuō)明異常的類型為 E

3、xception。2、源文件是Demo3_2.java。要捕捉的異常是除數(shù)為零和數(shù)組下標(biāo)越界。通過(guò)修改a和c下標(biāo)值體驗(yàn)程序。public class Demo3_2 public static void main (String args)int a, b;int c=1,2,3;try a=10; b=100/a; System.out.println ("當(dāng)前a值:"+a); c2=200; System.out.println ("當(dāng)前數(shù)組長(zhǎng):"+c.length); catch(ArithmeticException e) System.out.

4、println ("除零錯(cuò)誤:"+e); catch(ArrayIndexOutOfBoundsException e) System.out.println ("數(shù)組下標(biāo)越界:"+e); finally System.out.println ("我是finally"); System.out.println ("我能被正常執(zhí)行到");【思考】 先運(yùn)行上面程序,觀察運(yùn)行結(jié)果。 按下條件分別修改數(shù)據(jù),編譯后運(yùn)行,觀察輸出結(jié)果,分析在trycatch塊里那些語(yǔ)句沒(méi)有被執(zhí)行,為什么? 塊外那些語(yǔ)句可被執(zhí)行到,為什么?修改

5、a=0, 保持c2=200;保持a=10,修改c3=200,修改a=0, 修改c3=200; 再添加一個(gè)catchException e ,位置在最前面,觀察編譯信息,說(shuō)明什么?3、編寫Demo3_3.java 程序,計(jì)算兩數(shù)相除并輸出結(jié)果。使用兩個(gè)catch子句,分別捕捉除數(shù)為0的異常和參數(shù)輸入有誤異常。源代碼如下:import java.io.*;class Demo3_3public static void main(String args ) tryBufferedReader strin=new BufferedReader ( new InputStreamReader(Syste

6、m .in);System .out .print("請(qǐng)輸入除數(shù):");String cl=strin .readLine();int a=Integer .parseInt(cl);System .out .print("請(qǐng)輸入被除數(shù):");cl=strin .readLine();int b=Integer .parseInt(cl);int c=b/a;System .out .println("商為:"+c);catch(NumberFormatException e)System .out .println("請(qǐng)輸

7、入整數(shù)!");/e .printStackTrace();/捕獲除數(shù)為0的異常catch(ArithmeticException e)System .out .println("除數(shù)不可以0!"); /e .printstackTrace(); /捕獲與I/O有關(guān)的異常catch(IOException e)e.printStackTrace(); /捕獲數(shù)值轉(zhuǎn)化時(shí)的異常,如不能將字符轉(zhuǎn)化成數(shù)值 編譯并運(yùn)行,當(dāng)輸入除數(shù)為0時(shí),將有異常出現(xiàn),當(dāng)輸入的不是整數(shù)時(shí),如將30輸成了3o,出現(xiàn)的是另一種異常。(二)自定義異常類4、注意throw、throws的使用。源文件是

8、Demo3_4.java。package sy3;class MyException extends Exceptionpublic String toString()return "除數(shù)等于零" class DIVdouble div(double x,double y) throws MyExceptionif(y=0) throw new MyException();else return (x/y);public class Demo3_4 public static void main (String args) double z;DIV d=new DIV();

9、 try z=d.div(100,0);System.out.println ("當(dāng)前z值:"+z); catch(MyException e) System.out.println (e.toString(); 【思考】 修改try.catch中語(yǔ)句z=div.DIV(100,0)入口參數(shù),觀察運(yùn)行結(jié)果。 z=d.div(100,10);z=d.div(100,0); 將try.catch語(yǔ)句注釋掉,觀察編譯信息。 上面條件保持,在main函數(shù)后面加上throws MyException再重新編譯,能否通過(guò)?然后運(yùn)行觀察結(jié)果,得到什么結(jié)論?2編寫程序Demo3_5.jav

10、a,包含自定義異常,當(dāng)輸入數(shù)值為13和4時(shí)拋出該異常。源代碼如下:class Ex3_5 extends Exception Ex3_5 (String msg) super(msg); class Demo3_5private int x;void setX(int x) this.x=x; void f1() throws Ex3_5 if(x=13) throw new Ex3_5("I dont like 13!");else if(x=4)throw new Ex3_5("I dont like 4!");else System .out.pr

11、intln(100/x);public static void main(String args ) Demo3_5 a=new Demo3_5(); try a.setX(5); /a.setX(13);/a.setX(4);/a.setX(0);a.f1();catch(Ex3_5 e) System.out.println("get message:"+e.getMessage();【思考】編譯并運(yùn)行,分別取消注釋上面程序中被注釋的語(yǔ)句。當(dāng)釋放a.setX(13)語(yǔ)句后,查看運(yùn)行結(jié)果,當(dāng)釋放a.setX(4)語(yǔ)句后,查看運(yùn)行結(jié)果,當(dāng)釋放a.setX(0)語(yǔ)句后,查看運(yùn)

12、行結(jié)果。四、實(shí)驗(yàn)練習(xí)題1、編寫Java程序,創(chuàng)建數(shù)組后,對(duì)數(shù)組訪問(wèn)時(shí)發(fā)生的數(shù)組越界.實(shí)驗(yàn)使用try-catch語(yǔ)句處理該異常。運(yùn)行結(jié)果如圖所示。import java.io.*;public class Demo3_6 public static void main(String arg3) try BufferedReader strin=new BufferedReader ( new InputStreamReader(System .in); System.out.println("請(qǐng)輸入創(chuàng)建數(shù)組的個(gè)數(shù):n"); String cl=strin.readLine(); int a=Integer .parseInt(cl); System.out.println("數(shù)組創(chuàng)建完畢!您要查找那個(gè)元素?n"); String c2=strin.r

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論