第05章 異常處理_第1頁
第05章 異常處理_第2頁
第05章 異常處理_第3頁
第05章 異常處理_第4頁
第05章 異常處理_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五章第五章 異常處理異常處理 課程回顧課程回顧抽象類、抽象方法的聲明接口主要作用finalpublic abstract class abstractClass abstract returnType abstractMethod(paramlist);接口主要作用是可以幫助實現(xiàn)類似于類的多重繼承的功能final類不能被繼承,沒有子類,final類中的方法默認(rèn)是final的。 final方法不能被子類的方法覆蓋,但可以被繼承。 final成員變量表示常量,只能被賦值一次,賦值后值不再改變。 final不能用于修飾構(gòu)造方法本章主要內(nèi)容本章主要內(nèi)容5.1 簡介 5.2 異常處理 5.3 自定義異

2、常 5.4 常見異常及處理方法 5.5 總結(jié) 生活中的異常生活中的異常正常情況下,小王每日開車去上班,耗時大約30分鐘v但是,異常情況遲早要發(fā)生!一路暢通一路暢通堵車!堵車!撞車!撞車!程序中的異常程序中的異常public class TestException public static void main(String args) System.out.print(請輸入課程代號(1至3之間的數(shù)字):);Scanner in = new Scanner(System.in);int courseCode = in.nextInt(); / 從鍵盤輸入整數(shù)switch (courseCode

3、) case 1:System.out.println(C#編程); break;case 2:System.out.println(Java編程); break;輸入:輸入:2輸出:輸出:Java編程編程輸入:輸入:B程序中斷運(yùn)行!程序中斷運(yùn)行!正常情況:正常情況:異常情況:異常情況:什么是異常什么是異常異常就是在程序的運(yùn)行過程中發(fā)生的不正常的事件,它會中斷正在運(yùn)行的程序繞行或者等待請求交警解決異常!v面對異常該怎么辦呢?通常情況下,我們會這樣處理:程序運(yùn)行程序中斷運(yùn)行堵車!撞車!生活中,我們會根據(jù)不同的異常進(jìn)行相應(yīng)的處理,而不會就此中斷我們的生活什么是異常處理什么是異常處理Java編程語言

4、使用異常處理機(jī)制為程序提供了錯誤處理的能力程序中預(yù)先想好了程序中預(yù)先想好了 對付異常的處理辦法對付異常的處理辦法 異常!異常! 程序運(yùn)行程序運(yùn)行處理完畢,程序繼續(xù)運(yùn)行處理完畢,程序繼續(xù)運(yùn)行對異常進(jìn)行處理對異常進(jìn)行處理5.1 5.1 簡介簡介在Java中,提供了錯誤捕捉和處理機(jī)制,即異常處理機(jī)制。 在程序運(yùn)行過程中發(fā)生錯誤時,Java允許其不按照正常路徑完成任務(wù),由發(fā)現(xiàn)錯誤的方法拋出封裝了錯誤信息的對象(異常)到其調(diào)用程序,發(fā)出已經(jīng)發(fā)生問題的信號,然后立即退出而且,程序并不在調(diào)用該方法的代碼處繼續(xù)執(zhí)行,而是由異常處理機(jī)制開始搜索一個能夠處理這種特定錯誤情況的異常處理器。 5.2 5.2 異常處理

5、異常處理異常處理類結(jié)構(gòu)圖異常處理類結(jié)構(gòu)圖異常處理類結(jié)構(gòu)圖說明異常處理類結(jié)構(gòu)圖說明Throwable 類是 Java 語言中所有錯誤或異常的父類。 Error類被認(rèn)為是不能恢復(fù)的嚴(yán)重錯誤,如系統(tǒng)內(nèi)部錯誤和資源耗盡錯誤等。Exception類定義可能遇到的輕微錯誤,分為派生自RuntimeException類的異常和非派生自RuntimeException類的異常,簡稱為運(yùn)行時異常和非運(yùn)行時異常5.2.1 聲明拋出異常聲明拋出異常ExceptionException類有下面幾個常用的構(gòu)造方法:類有下面幾個常用的構(gòu)造方法:5.2.1 聲明拋出異常聲明拋出異常聲明拋出異常是通過throws語句來完成的

6、。語法如下: 修飾符修飾符 返回值類型返回值類型 方法名方法名( (參數(shù)列表參數(shù)列表) throws ) throws 異常異常例:聲明拋出異常, 并打出異常詳細(xì)消息。5.2.2 捕獲異常捕獲異常捕捉異常的語法如下:捕捉異常的語法如下:JavaJava中如何進(jìn)行異常處理中如何進(jìn)行異常處理Java的異常處理是通過5個關(guān)鍵字來實現(xiàn)的:try、catch、 finally、throw、throws 捕獲異常捕獲異常 catchtryfinally執(zhí)行可能產(chǎn)生執(zhí)行可能產(chǎn)生 異常的代碼異常的代碼 捕獲異常捕獲異常 無論是否發(fā)生異常,無論是否發(fā)生異常,代碼總能執(zhí)行代碼總能執(zhí)行手動拋出異常手動拋出異常 拋出

7、異常拋出異常 throw聲明異常聲明異常 聲明方法可能要聲明方法可能要拋出的各種異常拋出的各種異常 throws5.2.2 捕獲異常捕獲異常使用try/catch塊捕獲異常,分為三種情況:trycatch try/catch 塊后的代碼段塊后的代碼段public void method()try / 代碼段(此處不會產(chǎn)生異常) catch (異常類型 ex) / 對異常進(jìn)行處理的代碼段/ 代碼段第一種情況第一種情況 具體代碼public class CatchExc public static void main(String args) try int score = Integer.par

8、seInt(args0);if (score 100 | score 100 | score 100 | score 100 | score 0) / 拋出異常對象throw new Exception(你輸入的分?jǐn)?shù)不正確!); else System.out.println(你輸入了正確的分?jǐn)?shù)!); catch (Exception e) / 捕獲異常,并且打印它的內(nèi)容System.out.println(捕獲到異常: + e.getMessage(); finally System.out.println(“分?jǐn)?shù)check完畢! ”);輸入:-10控制臺輸出分?jǐn)?shù)check完畢!捕獲到異常:

9、你輸入了不正確的分?jǐn)?shù)!控制臺輸出public void method()try / 代碼段代碼段 / 產(chǎn)生異常產(chǎn)生異常(異常類型異常類型2) catch (異常類型異常類型1 ex) / 對異常進(jìn)行處理的代碼段對異常進(jìn)行處理的代碼段 catch (異常類型異常類型2 ex) / 對異常進(jìn)行處理的代碼段對異常進(jìn)行處理的代碼段 catch (異常類型異常類型3 ex) / 對異常進(jìn)行處理的代碼段對異常進(jìn)行處理的代碼段/ 代碼段代碼段多重多重catchcatch塊塊 2-12-1一段代碼可能會引發(fā)多種類型的異常當(dāng)引發(fā)異常時,會按順序來查看每個 catch 語句,并執(zhí)行第一個與異常類型匹配的catch

10、語句執(zhí)行其中的一條 catch 語句之后,其后的 catch 語句將被忽略 try 與異常類型與異常類型1不匹配不匹配try/catch 塊后的代碼段塊后的代碼段發(fā)生異常發(fā)生異常產(chǎn)生異常對象產(chǎn)生異常對象catch與異常類型與異常類型2匹配匹配catchcatch程序繼續(xù)執(zhí)行程序繼續(xù)執(zhí)行進(jìn)入進(jìn)入catch塊塊多重catch塊 2-2public class Exception4 public static void main(String args) Scanner in = new Scanner(System.in);trySystem.out.print(“請輸入請輸入S1的總學(xué)時:的總學(xué)

11、時:);int totalTime = in.nextInt(); /總學(xué)時總學(xué)時System.out.print(“請輸入請輸入S1的課程數(shù)目:的課程數(shù)目:);int totalCourse = in.nextInt(); /課程數(shù)目課程數(shù)目System.out.println(“S1各課程的平均學(xué)時為:各課程的平均學(xué)時為: + totalTime / totalCourse); catch (InputMismatchException e1) System.out.println(輸入不為數(shù)字輸入不為數(shù)字!); catch (ArithmeticException e2) System.

12、out.println(課程數(shù)目不能為零課程數(shù)目不能為零!); catch (Exception e) System.out.println(發(fā)生錯誤發(fā)生錯誤:+e.getMessage();輸入:輸入:270 H 在安排在安排catch語句的順序時,首先應(yīng)該捕獲最特殊的異常,語句的順序時,首先應(yīng)該捕獲最特殊的異常, 然后再然后再逐漸一般化,即先子類后父類逐漸一般化,即先子類后父類 輸出:輸出:輸入不為數(shù)字輸入不為數(shù)字!進(jìn)入第一個進(jìn)入第一個catch塊塊輸入:輸入:270 0 輸出:輸出:課程數(shù)目不能為零課程數(shù)目不能為零!進(jìn)入第二個進(jìn)入第二個catch塊塊拋出異常如果在當(dāng)前環(huán)境無法解決一個異常

13、,就要將其拋出,把異常交給調(diào)用者處理 public class Teacher private String id; / 教員編號,長度應(yīng)為教員編號,長度應(yīng)為7 public void setId(String pId) / 判斷教員編號的長度是否為判斷教員編號的長度是否為7 if (pId.length() = 7) id = pId; else throw new IllegalArgumentException(參數(shù)長度應(yīng)為參數(shù)長度應(yīng)為7!); public class TeacherTest public static void main(String args) AccpTeache

14、r teacher = new AccpTeacher(); try teacher.setId(088); catch (IllegalArgumentException ex) System.out.println(ex.getMessage(); 拋出異常拋出異常捕獲異常捕獲異常參數(shù)長度應(yīng)為參數(shù)長度應(yīng)為7!控制臺輸出控制臺輸出聲明異常public class Teacher private String id;/ 教員編號教員編號,長度應(yīng)為長度應(yīng)為7 public void setId(String pId) throws IllegalArgumentException / 判斷教員編

15、號的長度是否為判斷教員編號的長度是否為7 if (pId.length() = 7) id = pId; else throw new IllegalArgumentException(參數(shù)長度應(yīng)為參數(shù)長度應(yīng)為7!); public class TeacherTest public static void main(String args) Teacher teacher = new Teacher();try teacher.setId(088); catch (IllegalArgumentException ex) System.out.println(ex.getMessage(); 由調(diào)用者捕獲異常由調(diào)用者捕獲異常 聲明該方法可能會產(chǎn)生異常聲明該方法可能會產(chǎn)生異常 5.3 自定義異常自定義異常創(chuàng)建方法:創(chuàng)建方法:繼承現(xiàn)有的異常類繼承現(xiàn)有的異常類5.4 常見異常及處理

溫馨提示

  • 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

提交評論