面向對象的程序設計-Java張白一第三版第12章.ppt_第1頁
面向對象的程序設計-Java張白一第三版第12章.ppt_第2頁
面向對象的程序設計-Java張白一第三版第12章.ppt_第3頁
面向對象的程序設計-Java張白一第三版第12章.ppt_第4頁
面向對象的程序設計-Java張白一第三版第12章.ppt_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第12章 異常處理,12.1 Java的異常處理機制 12.2 Java的異常處理語句,12.1 Java的異常處理機制 Java的異常處理機制用于及時有效地處理程序運行中的異常錯誤。按照這種機制,人們在程序中監(jiān)視可能發(fā)生異常的程序塊,一個程序中的所有異常被收集起來放到程序的某一段中處理。這就使人們不必在被監(jiān)視的程序塊中多處插入處理異常的代碼,使完成正常功能的程序代碼與進行異常處理的程序代碼分開。,12.1.1 異常處理機制的結構 Java中引入了異常和異常類,并且定義了很多異常類。每個異常類代表一類運行錯誤,類中包含了該運行錯誤的信息和處理錯誤的方法等內容。每當Java程序運行過程中發(fā)生一個可識別的運行錯誤時,系統(tǒng)都會產生一個相應異常類的對象,并由系統(tǒng)中相應的機制來處理,以確保不會產生死機、死循環(huán)或其他對操作系統(tǒng)有損害的結果,從而保證了整個程序運行的安全性。,在Java程序中,當程序運行過程中發(fā)生異常時,可采用如圖12.1所示的兩種方式處理異常:一是由Java異常處理機制的預設處理方法來處理,即一旦程序發(fā)生異常,程序就會被終止并顯示一些錯誤信息給用戶;二是使用Java語言提供的try-catch-finally語句自行處理異常。第二種方式的優(yōu)點很多,其中最主要的優(yōu)點是將處理異常的代碼與程序代碼的主線分離開來,增強了程序的可讀性;其次是可減少中途終止程序運行的可能性。,圖12.1 異常處理機制結構,【示例程序C12_1.java】 系統(tǒng)自動拋出異常。 public class C12_1 public static void main(String args) int a,b,c; a=67; b=0; c=a/b; System.out.println(a+“/”+b+“=”+c); ,該程序在NetBeans環(huán)境下的運行結果如下: Exception in thread “main” java.lang.ArithmeticException: / by zero at C12_1.main(C12_1.java:6) Java Result: 1,12.1.2 異常類的繼承關系 Java中定義了很多異常類,每個異常類都代表了一類運行錯誤,類中包含了該運行錯誤的信息和處理錯誤的方法等內容。這些異常類的繼承結構如圖12.2所示。 在Java語言中所有的異常類都繼承自java.lang.Throwable類。Throwable類有兩個直接子類:一個是Error子類,它包含Java系統(tǒng)或執(zhí)行環(huán)境中發(fā)生的異常,這些異常是用戶無法捕捉到的;另一個是Exception類,它包含了一般性的異常,如I/O異常、SQL異常,這些異常是用戶可以捕捉到的,可以通過產生它的子類來創(chuàng)建自己的異常處理。下面分別論述。,圖12.2 異常類的繼承結構,(2) java.io包中的異常。,(4) 包中的異常。,(5) 系統(tǒng)定義的運行異常Exception類。,(6) 系統(tǒng)定義的運行異常Error類。 在系統(tǒng)定義的運行異常Error類中,除AWTError類在java.awt包中外,其余的全部在java.lang包中。 java.lang包中的Error類如下:,12.2 Java的異常處理語句 Java語言的異常處理是通過try、catch、finally、throw和throws語句來實現(xiàn)的。 12.2.1 try-catch-finally語句 在大多數(shù)情況下,系統(tǒng)預設的異常處理方法只會輸出一些簡單的信息到顯示器上,然后結束程序的執(zhí)行。這樣的處理方式在許多情況下并不符合我們的要求。為此,Java語言為我們提供了try-catch-finally語句,使用該語句可以明確地捕捉到某種類型的異常,并按我們的要求加以適當處理,這才是發(fā)揮異常處理機制的最佳方式。try-catch-finally的結構如圖12.3所示。,圖12.3 try-catch-finally的結構,try-catch-finally組合語句用來實現(xiàn)拋出異常和捕獲異常的功能。其格式如下: try statements /可能發(fā)生異常的程序代碼 catch (ExceptionType1 ExceptionObject) Exception Handling /處理異常的程序代碼1 catch(ExceptionType2 ExceptionObject) Exception Handling /處理異常的程序代碼2 ,finally Finally Handling /無論是否發(fā)生異常都要執(zhí)行的程序代碼 其中: (1) try:將可能出現(xiàn)錯誤的程序代碼放在try塊中,對try塊中的程序代碼進行檢查,可能會拋出一個或多個異常。因此,try后面可跟一個或多個catch。,(2) catch:其功能是捕獲異常。參數(shù)ExceptionObject是ExceptionType類的對象,這是由前面的try語句生成的。ExceptionType是Throwable類中的子類,它指出catch語句中所處理的異常類型。在用catch捕獲異常的過程中,要將Throwable類中的異常類型和try語句拋出的異常類型進行比較,若相同,則在catch中進行處理。 (3) finally:是這個組合語句的統(tǒng)一出口,一般用來進行一些“善后”操作,例如釋放資源、關閉文件等。它是可選的部分。,【示例程序C12_2.java】 使用try-catch-finally語句自行處理異常。 public class C12_2 public static void main(String args ) int a,b,c; a=67; b=0; try int x =new int-5; /錯 c=a/b; System.out.println(a+“/”+b+“=”+c); catch(NegativeArraySizeException e), System.out.println(“exception: ” + e.getMessage( ); e.printStackTrace( ); catch(ArithmeticException e) System.out.println(“b=0: ” + e.getMessage( ); finally System.out.println(“end”); 該程序的運行結果如下: java.lang.NegativeArraySizeException at C12_2.main(C12_2.java:7) exception: null end,12.2.2 嵌套try-catch-finally語句 Java語言的try-catch-finally語句可以嵌套,即在try塊中可以包含另外的try-catch-finally語句。 【示例程序C12_3.java】 使用嵌套的try-catch-finally語句自行處理異常。 public class C12_3 static int a,b,c; public static void main(String args ) try, a=10; b=0; try c=a/b; System.out.println(“a/b = “ + c); catch(IndexOutOfBoundsException E) System.out.println(“捕捉超出索引異常“); finally System.out.println(“嵌套內層的finally區(qū)塊“); ,catch(ArithmeticException E) System.out.println(“捕捉數(shù)學運算異常:b=“+b); finally System.out.println(“嵌套外層的finally區(qū)塊“); if(b = 0) System.out.println(“程序執(zhí)行發(fā)生異常!“); else System.out.println(“程序正常執(zhí)行完畢!“); ,該程序的運行結果如下: 嵌套內層的finally區(qū)塊 捕捉數(shù)學運算異常:b=0 嵌套外層的finally區(qū)塊 程序執(zhí)行發(fā)生異常!,12.2.3 拋出異常的throw語句與throws語句 Java的異常是系統(tǒng)在程序運行時拋出的,但編程員也可以根據(jù)實際情況在程序中拋出一個異常。在Java語言中,可以使用throw語句和throws語句拋出異常。 1. throw語句 throw語句用來明確地拋出一個異常。throw語句的作用是改變程序的執(zhí)行流程,使程序跳到相應的異常處理語句中執(zhí)行。throw語句的格式如下: throw exceptionObject,【示例程序C12_4.java】 使用throw語句拋出異常。 public class C12_4 public static void main(String args) try throw new NullPointerException(“自編異常”); catch(NullPointerException e) System.out.println(“exception:”+e); 該程序的運行結果如下: exception: java.lang.NullPointerException: 自編異常,2. throws語句 在有些情況下,不需要一個方法本身來處理異常,而是希望把異常向上移交給調用這個方法的方法來處理。此時,可以通過throws語句來處理。 throws語句的格式如下: returnType methodName(para1,para2,) throws exceptionList,【示例程序C12_5.java】 使用throws語句拋出異常。 import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JApplet; public class C12_5 extends JApplet static void throwOne( ) throws IllegalAccessExcept

溫馨提示

  • 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

提交評論