《java程序設計》課件 第9章異常處理_第1頁
《java程序設計》課件 第9章異常處理_第2頁
《java程序設計》課件 第9章異常處理_第3頁
《java程序設計》課件 第9章異常處理_第4頁
《java程序設計》課件 第9章異常處理_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第九章第九章9.1 Java異常處理機制異常處理機制9.2 異常處理方式異常處理方式9.1 異常處理機制異常處理機制 Java使用異常對程序給出一個統一使用異常對程序給出一個統一和相對簡單的拋出和處理錯誤的機制。和相對簡單的拋出和處理錯誤的機制。如果一個方法本身能拋出異常,調用者如果一個方法本身能拋出異常,調用者可以捕獲異常使之得到處理;也可以回可以捕獲異常使之得到處理;也可以回避異常,這時異常將在調用的堆棧中向避異常,這時異常將在調用的堆棧中向下傳遞,直到被處理。下傳遞,直到被處理。 異常類 在在Java中,將異常情況分為中,將異常情況分為Exception(異常)和(異常)和Error(錯

2、誤)兩大類。(錯誤)兩大類。 Error 類對象由類對象由 Java 虛擬機虛擬機生成并拋出;生成并拋出;Exception 類對象由應用程序處理或拋出類對象由應用程序處理或拋出。ObjectThrowableExceptionError 異常類的繼承結構 Exception子類的繼承關系ExceptionClassNotFoundExceptionClassNotSupportedExceptionIllegalAccessExceptionInstantiationExceptionInterruptedExceptionNoSuchMethodExceptionRuntimeExcept

3、ionArithmeticExceptionArrayStoreExceptionClassCastExceptionIllegalArgumentExceptionIllegalThreadStateExceptionNumberFormatExceptionException子類(續)IllegalMonitorStateExceptionIndexOutOfBoundsExceptionArrayIndexOutOfBoundsExceptionStringIndexOutOfBoundsExceptionNegativeArraySizeExceptionNullPointerExce

4、ptionSecurityException Exception 類的主要方法public Exception( );public Exception(String s);public String toString( );public String getMessage( );9.2 異常處理方法異常處理方法 異常處理的方法有兩種:1.使用trycatchfinally結構對異常進行捕獲和處理;2.通過throws和throw拋出異常。 1 trycatchfinally結構結構在在Java中,可以通過中,可以通過trycatchfinally結構對異常進行捕獲和處理,其形式結構對異常進行捕

5、獲和處理,其形式如下:如下:try 可能出現異常的程序代碼可能出現異常的程序代碼catch (異常類名異常類名1 異常對象名異常對象名1) 異常類名異常類名1對應的異常處理代碼對應的異常處理代碼 catch (異常類名異常類名2 異常對象名異常對象名2) 異常類名異常類名2對應的異常處理代碼對應的異常處理代碼 finally 必須執行的代碼必須執行的代碼 說明u將可能發生異常的程序代碼放置在將可能發生異常的程序代碼放置在try程序塊中。程序運程序塊中。程序運行過程中,如果該塊內的代碼沒有出現任何異常,后面行過程中,如果該塊內的代碼沒有出現任何異常,后面的各的各catch塊不起任何作用。但如果該

6、塊內的代碼出現了塊不起任何作用。但如果該塊內的代碼出現了異常,系統將終止異常,系統將終止try塊代碼的執行,自動跳轉到所發生塊代碼的執行,自動跳轉到所發生的異常類對應的的異常類對應的catch塊中,執行該塊中的代碼。塊中,執行該塊中的代碼。 u其中的其中的finally塊是個可選項,如果含有塊是個可選項,如果含有finally塊,無論塊,無論異常是否發生,異常是否發生,finally塊的代碼必定執行。塊的代碼必定執行。 u一個一個try塊可以對應多個塊可以對應多個catch塊,用于對多個異常類進塊,用于對多個異常類進行捕獲。行捕獲。 Java實例實例捕獲數組下標越界異常捕獲數組下標越界異常pu

7、blic class Exception1 public static void main(String args) try int a=1,2,3,4,5, sum=0; for (int i=0; i=5; i+) sum=sum+ai; System.out.println(sum=+sum); System.out.println(Successfully! ); catch (ArrayIndexOutOfBoundsException e) System.out.println(ArrayIndexOutOfBoundsException detected); finally Sy

8、stem.out.println( Programm Finished! ); 例例 -捕獲算術異常捕獲算術異常public class Exception2public static void main(String args) try int x, y; x=15; y=0; System.out.println(x/y); System.out.println(Computing successfully!); catch (ArithmeticException e) System.out.println( ArithmeticException catched ! ); System

9、.out.println(Exception message:+e.toString(); finally System.out.println(Finally block.); 2 拋出異常拋出異常通常情況下,異常是由系統自動捕獲的通常情況下,異常是由系統自動捕獲的。但程序但程序員也可以自己通過員也可以自己通過throw語句拋出異常。語句拋出異常。throw語語句的格式為:句的格式為: throw new 異常類名(信息)異常類名(信息) 其中異常類名為其中異常類名為系統異常類名或或用戶自定義的異的異常類名,常類名,“信息信息”是可選信息。如果提供了該信是可選信息。如果提供了該信息,息,to

10、String()方法的返回值中將增加該信息內容。方法的返回值中將增加該信息內容。 l拋出異常語句拋出異常語句Java實例實例拋出多個異常public class Exception3 public static int Sum(int n) if (n 0) throw new IllegalArgumentException(n應該為正整數!應該為正整數!); int s = 0; for (int i=0; i=n; i+) s = s + i; return s; public static void main(String args) try int n = Integer.parse

11、Int(args0); System.out.println(Sum(n); catch (ArrayIndexOutOfBoundsException e) System.out.println(命令行為:命令行為:+java Exception3 ); catch (NumberFormatException e2) System.out.println(參數參數應為整數應為整數!); catch (IllegalArgumentException e3) System.out.println(錯誤參數錯誤參數:+e3.toString(); finally System.out.prin

12、tln(程序結束程序結束!); 在有些情況下,一個方法并不需要處理它所生成的異常,在有些情況下,一個方法并不需要處理它所生成的異常,而是向上傳遞,由調用該方法的其他方法來捕獲該異常,而是向上傳遞,由調用該方法的其他方法來捕獲該異常,這時就要用到這時就要用到throws子句。其格式如下:子句。其格式如下: 返回值類型名返回值類型名 方法名(方法名(參數表參數表) throws 異常類型名異常類型名 聲明部分聲明部分 語句部分語句部分 l拋出異常選項拋出異常選項例-拋出異常的方法public class Exception4 public static int Sum() throws Negat

13、iveArraySizeException int s = 0; int x = new int-4; for (int i=0; i1.0E8 | aim0) throw new OverFlowException(); else return x*x; public static void main(String args) int y; try y= multi(); System.out.println(y=+y); catch(OverFlowException e) System.out.println(e); 例 -處理多種異常 import javax.swing.JOptio

14、nPane;class mathException extends Exception mathException() System.out.println(輸入數據不正確); class Exception6 public static String name; public static int pay; public static void inputdata() throws mathException try name=JOptionPane.showInputDialog(請輸入您的姓名); if(name.equals(“”) throw new Exception(); /假如沒有輸入名字就“拋出”一個 Exception異常 pay=Integer.parseInt(JOptionPane.showInputDialog(請輸入您的月工資); if(pay0) throw new mathException(); /假如輸入的月工資數小于零,就會拋出自定義異常mathException catch(Exception e) /捕獲Exception異常

溫馨提示

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

評論

0/150

提交評論