實驗五異常處理_第1頁
實驗五異常處理_第2頁
實驗五異常處理_第3頁
實驗五異常處理_第4頁
實驗五異常處理_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗五 異常處理一、實驗目的1. 學會利用Try-catch-finally語句來捕獲和處理異常;2. 掌握自定義異常類的方法。二、實驗要求1. 通過編程理解系統(tǒng)異常處理的機制和創(chuàng)建自定義異常的方法。2. 掌握基礎類。三、實驗內容(一)異常處理機制1. 編寫使用 trycatch 語句處理異常的程序文件Demo4_1.java,源代碼如下: public class Demo3_1 public static void main(String arg3) ("這是一個異常處理的例子n"); try int i=10; i /=0; catch (ArithmeticExce

2、ption e) ("異常是:"+e.getMessage(); finally ("finally 語句被執(zhí)行"); l 編譯并運行程序。 注意:如果在 catch 語句中聲明的異常類是 Exception,catch 語句也能正確地捕獲,這是因為 Exception是ArithmeticException的父類。如果不能確定會發(fā)生哪種情況的異常,那么最好指定catch的參數(shù)為 Exception,即說明異常的類型為 Exception。2、源文件是Demo3_2.java。要捕捉的異常是除數(shù)為零和數(shù)組下標越界。通過修改a和c下標值體驗程序。publi

3、c class Demo3_2 public static void main (String args)int a, b;int c=1,2,3;try a=10; b=100/a; ("當前a值:"+a); c2=200; ("當前數(shù)組長:"+c.length); catch(ArithmeticException e) ("除零錯誤:"+e); catch(ArrayIndexOutOfBoundsException e) ("數(shù)組下標越界:"+e); finally ("我是finally&quo

4、t;); ("我能被正常執(zhí)行到");【思考】 先運行上面程序,觀察運行結果。 按下條件分別修改數(shù)據(jù),編譯后運行,觀察輸出結果,分析在trycatch塊里那些語句沒有被執(zhí)行,為什么? 塊外那些語句可被執(zhí)行到,為什么?修改a=0, 保持c2=200;保持a=10,修改c3=200,修改a=0, 修改c3=200; 再添加一個catchException e ,位置在最前面,觀察編譯信息,說明什么?3、編寫Demo3_3.java 程序,計算兩數(shù)相除并輸出結果。使用兩個catch子句,分別捕捉除數(shù)為0的異常和參數(shù)輸入有誤異常。源代碼如下:import java.io.*;clas

5、s Demo3_3public static void main(String args ) tryBufferedReader strin=new BufferedReader ( new InputStreamReader(System .in);System .out .print("請輸入除數(shù):");String cl=strin .readLine();int a=Integer .parseInt(cl);System .out .print("請輸入被除數(shù):");cl=strin .readLine();int b=Integer .par

6、seInt(cl);int c=b/a;System .out .println("商為:"+c);catch(NumberFormatException e)System .out .println("請輸入整數(shù)!");/e .printStackTrace();/捕獲除數(shù)為0的異常catch(ArithmeticException e)System .out .println("除數(shù)不可以0!"); /e .printstackTrace(); /捕獲與I/O有關的異常catch(IOException e)e.printStac

7、kTrace(); /捕獲數(shù)值轉化時的異常,如不能將字符轉化成數(shù)值 編譯并運行,當輸入除數(shù)為0時,將有異常出現(xiàn),當輸入的不是整數(shù)時,如將30輸成了3o,出現(xiàn)的是另一種異常。(二)自定義異常類4、注意throw、throws的使用。源文件是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 n

8、ew MyException();else return (x/y);public class Demo3_4 public static void main (String args) double z;DIV d=new DIV(); try z=d.div(100,0); ("當前z值:"+z); catch(MyException e) (e.toString(); 【思考】 修改try.catch中語句z=div.DIV(100,0)入口參數(shù),觀察運行結果。 z=d.div(100,10);z=d.div(100,0); 將try.catch語句注釋掉,觀察編譯信

9、息。 上面條件保持,在main函數(shù)后面加上throws MyException再重新編譯,能否通過?然后運行觀察結果,得到什么結論?2編寫程序Demo3_5.java,包含自定義異常,當輸入數(shù)值為13和4時拋出該異常。源代碼如下: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!&

10、quot;);else if(x=4)throw new Ex3_5("I dont like 4!");else System .out.println(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();【思考】編譯并運行,分別

11、取消注釋上面程序中被注釋的語句。當釋放a.setX(13)語句后,查看運行結果,當釋放a.setX(4)語句后,查看運行結果,當釋放a.setX(0)語句后,查看運行結果。四、實驗練習題1、編寫Java程序,創(chuàng)建數(shù)組后,對數(shù)組訪問時發(fā)生的數(shù)組越界.實驗使用try-catch語句處理該異常。運行結果如圖所示。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("請輸入創(chuàng)建數(shù)組的個數(shù):n"); String cl=strin.readLine(); int a=Integer .parseInt(cl); System.out.println("數(shù)組創(chuàng)建完畢!您要查找那個元素?n"); String c2=strin.read

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論