第七章例外處理(新)_第1頁
第七章例外處理(新)_第2頁
第七章例外處理(新)_第3頁
第七章例外處理(新)_第4頁
第七章例外處理(新)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java異常處理異異常常處處理理1、異常的概念、異常的概念2、標(biāo)準(zhǔn)異常類、標(biāo)準(zhǔn)異常類3、異常處理機(jī)制、異常處理機(jī)制4、自定義異常、自定義異常2程序錯誤分類l程序中的錯誤可分為三類:(1)編譯錯誤(2)邏輯錯誤(3)運(yùn)行時錯誤3異常的定義l異常是程序執(zhí)行期間發(fā)生的各種意外或錯誤。例如: 用戶輸入出錯 所需文件找不到 運(yùn)行時磁盤空間不夠 內(nèi)存不夠 算術(shù)運(yùn)算錯 (數(shù)的溢出,被零除) 數(shù)組下標(biāo)越界 4異常的分類lJava程序運(yùn)行過程中,會產(chǎn)生的異常有如下三種類型:(1)JAVA虛擬機(jī)由于某些內(nèi)部錯誤產(chǎn)生的異常。(2)標(biāo)準(zhǔn)異常類,由java系統(tǒng)預(yù)先定義好的。(3)用戶程序自定義的異常類。Java異常處理

2、異異常常處處理理1、異常的概念、異常的概念2、標(biāo)準(zhǔn)異常類、標(biāo)準(zhǔn)異常類3、異常處理機(jī)制、異常處理機(jī)制4、自定義異常、自定義異常6Java中標(biāo)準(zhǔn)異常類的層次結(jié)構(gòu)l Java中所有的異常都是用類表示的,每個異常類都代表了一種運(yùn)行錯誤。l Java定義了許多標(biāo)準(zhǔn)異常類,它們都是系統(tǒng)類庫中的ExceptionException類類的子類,它們分布在java.lang、java.io、java.util和包中,各個異常類采用繼承的方式進(jìn)行組織。l 異常類的層次結(jié)構(gòu)圖如下圖所示:7Java中標(biāo)準(zhǔn)異常類的層次結(jié)構(gòu)Throwable類類Error類類ExceptionException類類 RuntimeExc

3、eption類類ArithmeticException類類IndexOutofBoundException類類ArrayIndexOutofBoundsException類類IoException類類FileNotFoundException類類EOFException類類在在Java.lang包包在在Java.io包包8Throwable類l 該類屬于Java.lang包,是所有異常類的父類在Throwable類中定義了描述異常發(fā)生的位置和所有異常類共同需要的內(nèi)容9Throwable類的構(gòu)造方法 以null作為錯誤信息串內(nèi)容創(chuàng)建Throwable對象,同時調(diào)用該對象的另一方法fillInSt

4、ackTrace記錄異常發(fā)生的位置。 以message的內(nèi)容作為錯誤信息串創(chuàng)建Throwable對象,同時調(diào)用該對象的另一方法fillInStackTrace。 public Throwable() public Throwable() public Throwable(String message) public Throwable(String message)10Throwable類的主要成員方法 返回異常描述。 public String getMessage() public String getMessage() public String toString() public St

5、ring toString() 返回異常對象詳細(xì)信息。11Throwable類的主要成員方法 打印異常發(fā)生的路徑,即引起異常的方法調(diào) 用嵌套序列。 public void printStackTrace() public void printStackTrace() public Trowable fillInStackTrace() public Trowable fillInStackTrace() 將當(dāng)前異常對象的發(fā)生位置 (類、方法和所在文件的行號) 記錄到跟蹤棧對象中。12Error類 Error類是Throwable類的子類,由系統(tǒng)保留,用戶不能使用。lError類描述系統(tǒng)錯誤:如

6、將字節(jié)碼裝入內(nèi)存的過程中和對字節(jié)碼進(jìn)行檢查的過程中遇到的問題、java的內(nèi)部錯誤、資源耗盡等情況。l這類異常由java直接處理,用戶程序不要理會這類異常。13 Exception類是Throwable類的子類,用戶程序中可以直接使用Exception類處理Exception類型的異常。 Exception類不僅繼承了Throwable類的方法,同時還定義了以下兩個構(gòu)造方法: Exception類(1 1)public Exception()public Exception()(2 2)public Exception(String s)public Exception(String s)Jav

7、a異常處理異異常常處處理理1、異常的概念、異常的概念2、標(biāo)準(zhǔn)異常類、標(biāo)準(zhǔn)異常類3、異常處理機(jī)制、異常處理機(jī)制4、自定義異常、自定義異常15異常處理機(jī)制lJava對異常的處理涉及兩方面的內(nèi)容:(1)拋出異常(throw)(2)捕捉異常(catch)16拋出異常 JAVA程序拋出異常有兩種方式:(1)由系統(tǒng)自動拋出異常 (2)人為異常拋出。有兩種方式: 在方法頭方法頭寫出需要拋出的異常(利用throws 語句) 在方法體內(nèi)方法體內(nèi)拋出異常(利用throw語句)17throws語句格式 throws語句格式為: 修飾符修飾符 返回值類型返回值類型 方法名(方法名( 形參表形參表 )throws th

8、rows 異常類名異常類名1 1,異常類名,異常類名2 2, 例如: public void troubleSome() throws IOException18throws語句舉例class Throws_Exp public static void main(String args) throws ArithmeticException,ArrayIndexOutOfBoundsException int a=4,b=0,c=1,2,3,4,5; System.out.println(a/b); System.out.println(ca+1); System.out.println(“e

9、nd”); 19throw語句格式 如果需要在方法內(nèi)方法內(nèi)某個位置拋出異常,可以使用throw語句,通常將throw語句和if語句配合使用。 格式:(1) throw 異常類對象名;(2) throw (new 異常類名();20throw語句舉例(1)class Throw_Exp1 public static void main(String args) ArithmeticException e=new ArithmeticException(); int a=4,b=0; System.out.println(“Before ArithmeticException”); if(b=0)

10、 throw e; System.out.println(a/b); 21class Throw_Exp2 public static void main(String args) int a=5,c=1,2,3,4,5; System.out.println(“Before throw ArrayIndexOutOfBoundsException”); if(a4) throw (new ArrayIndexOutOfBoundsException(); System.out.println(“After throw ArrayIndexOutOfBoundsException”); thr

11、ow語句舉例(2)22class Throw_Exp3 public static void main(String args) int a=5,b=0,c=1,2,3,4,5; System.out.println(“Before throw”); if(b=0) throw (new ArithmeticException (); System.out.println(a/b); if(a4) throw (new ArrayIndexOutOfBoundsException(); System.out.println(a/b); throw語句舉例23捕捉異常 要由程序自己捕捉和處理異常

12、,需要建立try- catch-finally語句塊。24try /在此區(qū)域內(nèi)或能發(fā)生異常; catch(異常類1 e1) /處理異常1; catch(異常類n en) /處理異常n; finally /不論異常是否發(fā)生,都要執(zhí)行的部分; 被監(jiān)視的塊該catch子句能夠捕捉和處理的異常類型try - catch語句塊格式25try-catch-finally結(jié)構(gòu)說明(1)將可能發(fā)生異常的程序代碼放置在try程序塊中。如果該塊內(nèi)的代碼出現(xiàn)了異常,系統(tǒng)將終止try塊代碼的執(zhí)行,自動跳轉(zhuǎn)到所發(fā)生的異常類對應(yīng)的catch塊中,執(zhí)行該塊中的代碼。如果程序運(yùn)行正常,后面的各catch塊不起任何作用。(2)

13、finally塊是個可選項(xiàng),無論異常是否發(fā)生,finally塊的代碼必定執(zhí)行。通常把對各種異常共同處理部分放在finally塊中,如輸出統(tǒng)一信息、釋放資源、清理內(nèi)存、關(guān)閉已打開的文件等。(3)一個try塊可以對應(yīng)多個catch塊,用于對多個異常類進(jìn)行捕獲。但最多只能選中一個執(zhí)行。(4)異常對象與catch塊中聲明的實(shí)例的匹配原則: 異常對象是catch塊中聲明的異常類的實(shí)例; 異常對象是catch塊中聲明的異常類的某一子類的實(shí)例;26class Try_Catch_Exp1public static void main(String args) int d=0,a; try System.ou

14、t.println(Before throw Exception); a=5/d; System.out.println(the Exception is throw,The statement ist run); catch(ArithmeticException e) System.out.println(處理算數(shù)異常的catch語句塊捕獲了異常!); System.out.println(捕獲的異常為+e); catch(ArrayIndexOutOfBoundsException e) System.out.println(處理數(shù)組下標(biāo)越異常的catch語句塊捕獲了異常!); Syst

15、em.out.println(捕獲的異常為+e); finally System.out.println(這是所有catch塊的共有部分!); System.out.println(try-catch-finally塊后面的語句); try-catch-finally結(jié)構(gòu)例子(1)27class Try_Catch_Exp2 public static void main(String args) int a=5,b=0,c=1,2,3,4,5; try System.out.println(Before throw); if(a4) throw (new ArrayIndexOutOfBou

16、ndsException(); System.out.println (After throw); catch(ArrayIndexOutOfBoundsException e) System.out.println(處理數(shù)組下標(biāo)越異常的catch語句塊捕獲了異常!); System.out.println(捕獲的異常為+e); finally System.out.println(這是所有catch塊的共有部分!); System.out.println(try-catch-finally塊后面的語句); try-catch-finally結(jié)構(gòu)例子(2)Java異常處理異異常常處處理理1、異

17、常的概念、異常的概念2、標(biāo)準(zhǔn)異常類、標(biāo)準(zhǔn)異常類3、異常處理機(jī)制、異常處理機(jī)制4、自定義異常、自定義異常29自定義異常使用自定義異常的步驟:(1)通過繼承java.lang.Exception 類聲明自定義 異常類。(2)在方法適當(dāng)?shù)奈恢蒙勺远x異常類的實(shí)例, 并用throw語句拋出。(3)在方法的聲明部分用throws語句聲明該方法 可能拋出的異常。30自定義異常類格式用戶自定義異常類格式為: 例如: class 自定義異常類名 extends Exception 異常類體; class MyException extends Exception 31自定義異常類說明用戶定義的異常同樣要用try-catch捕獲,但必須由用戶自己拋出異常。 例如:throw new MyException()32自定義異常例子class Exception_exp public static void main(String args) try System.out.println(2+3=+add(2,3); System.out.println(-8+10=+add(-8,10); catch (Exception e) System.out.println(Exception is +e); static int add(int n,int m) throws UserException

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論