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

下載本文檔

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

文檔簡介

1、第第5章章 JAVA異常處理異常處理Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理第第5章章 JAVA異常處理異常處理5.1 異常的概念異常的概念5.2 異常處理異常處理5.3 自定義異常自定義異常Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理生活中的異常生活中的異常正常情況下,小王每日開車去上班,耗時大約正常情況下,小王每日開車去上班,耗時大約30分鐘分鐘但是,異常情況遲早要發(fā)生!但是,異常情況遲早要發(fā)生!一路暢通一路暢通堵車!堵車!撞車!撞車!Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理什么是異常什么是異常異常就是在程序的運行過程中所發(fā)生的

2、不正常的事件,它會異常就是在程序的運行過程中所發(fā)生的不正常的事件,它會中斷正在運行的程序中斷正在運行的程序繞行或者等待繞行或者等待請求交警解決請求交警解決異常!異常!面對異常該怎么辦呢?通常情況下,我們會這樣處理:面對異常該怎么辦呢?通常情況下,我們會這樣處理:程序運行程序運行程序中斷運行程序中斷運行堵車!堵車!撞車!撞車!生活中,我們會根據(jù)不同的異常進行相應(yīng)的處理,生活中,我們會根據(jù)不同的異常進行相應(yīng)的處理,而不會就此中斷我們的生活而不會就此中斷我們的生活Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理5.1 異常的概念異常的概念1.1.什么是異常?什么是異常? 異常是在程序運

3、行過程中所發(fā)生的破壞了正常異常是在程序運行過程中所發(fā)生的破壞了正常的指令流程的事件。軟件和硬件錯誤都可能導致的指令流程的事件。軟件和硬件錯誤都可能導致異常的產(chǎn)生。異常的產(chǎn)生。 程序運行出現(xiàn)異常時,程序運行出現(xiàn)異常時,JavaJava運行環(huán)境就用異常運行環(huán)境就用異常類類ExceptionException的相應(yīng)子類創(chuàng)建一個異常對象,并等的相應(yīng)子類創(chuàng)建一個異常對象,并等待處理待處理Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理程序中的異常程序中的異常public class ExcepNoCatch public static void main(String args) int

4、i = 0;String greetings = Hello world!, No, I mean it!, HELLO WORLD! ; while (i 4) System. out. println (greetings i); i+; Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理什么是異常處理什么是異常處理Java編程語言使用異常處理機制為程序提供了錯誤編程語言使用異常處理機制為程序提供了錯誤處理的能力處理的能力程序中預(yù)先想好了程序中預(yù)先想好了 對付異常的處理辦法對付異常的處理辦法 異常!異常! 程序運行程序運行處理完畢,程序繼續(xù)運行處理完畢,程序繼續(xù)運行對異常進行處

5、理對異常進行處理Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理2Java處理異常的機制處理異常的機制異常處理可分為以下幾個步驟異常處理可分為以下幾個步驟: :1 1)拋出異常拋出異常:當方法中有一個錯誤發(fā)生后,該方法:當方法中有一個錯誤發(fā)生后,該方法創(chuàng)建一個異常對象并把它交給運行時系統(tǒng)。創(chuàng)建一個異常對象并把它交給運行時系統(tǒng)。2 2)捕獲異常:捕獲異常: 運行時系統(tǒng)在方法調(diào)用堆棧里為被運行時系統(tǒng)在方法調(diào)用堆棧里為被拋出的異常查找處理代碼。拋出的異常查找處理代碼。3 3)異常處理:異常處理:通過方法調(diào)用來處理異常通過方法調(diào)用來處理異常4 4)異常終止:異常終止:如果運行時系統(tǒng)在方法

6、調(diào)用棧查遍了如果運行時系統(tǒng)在方法調(diào)用棧查遍了所有的方法而未找到合適的異常處理程序,則運所有的方法而未找到合適的異常處理程序,則運行時系統(tǒng)終止執(zhí)行。行時系統(tǒng)終止執(zhí)行。Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理2Java處理異常的機制處理異常的機制異常發(fā)生異常發(fā)生拋出拋出異常異常JAVA虛虛擬機擬機強強制制拋拋出出生生動動自自成成異常類異常類對象對象異常處理異常處理代碼代碼捕獲捕獲異常異常捕捕獲獲異異常常異常類異常類對象對象終 止終 止程序程序Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理2Java處理異常的機制處理異常的機制可以靈活的處理異常,如果當前方法有能

7、力處理異可以靈活的處理異常,如果當前方法有能力處理異常,就捕獲并處理它,否則只需拋出異常,由方法常,就捕獲并處理它,否則只需拋出異常,由方法調(diào)用者來處理它。調(diào)用者來處理它。異常流程的代碼和正常流程的代碼分離,提高了程異常流程的代碼和正常流程的代碼分離,提高了程序的可讀性,簡化了程序的結(jié)構(gòu)。序的可讀性,簡化了程序的結(jié)構(gòu)。Java處理異常的機制的特點:處理異常的機制的特點:用用JavaJava類來表示異常情況,這種類被稱為異常類。類來表示異常情況,這種類被稱為異常類。把異常情況表示成異常類,可以充分發(fā)揮類的可擴把異常情況表示成異常類,可以充分發(fā)揮類的可擴展和可重用的優(yōu)勢。展和可重用的優(yōu)勢。Java

8、程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理JavaJava中異常類的結(jié)構(gòu)中異常類的結(jié)構(gòu)Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理Java中如何進行異常處理中如何進行異常處理Java的異常處理是通過的異常處理是通過5個關(guān)鍵字來實現(xiàn)的:個關(guān)鍵字來實現(xiàn)的:try、catch、 finally、throw、throws 捕獲異常捕獲異常 catchtryfinally執(zhí)行可能產(chǎn)生執(zhí)行可能產(chǎn)生 異常的代碼異常的代碼 捕獲異常捕獲異常 無論是否發(fā)生異常,無論是否發(fā)生異常,代碼總能執(zhí)行代碼總能執(zhí)行手動拋出異常手動拋出異常 拋出異常拋出異常 throw聲明異常聲明異常 聲明方法

9、可能要聲明方法可能要拋出的各種異常拋出的各種異常 throwsJava程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理try/catch塊塊-1trycatch try/catch 塊后的代碼段塊后的代碼段public void method()try / 代碼段代碼段(此處不會產(chǎn)生異常此處不會產(chǎn)生異常) catch (異常類型異常類型 ex) / 對異常進行處理的代碼段對異常進行處理的代碼段/ 代碼段代碼段使用使用try/catch塊捕獲異常,分為三種情況:塊捕獲異常,分為三種情況:第一種情況第一種情況 Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理使用示例模擬第一種情

10、況:使用示例模擬第一種情況:Import java.util.Scanner;public class MyException public static void main(String args) System.out.print(請輸入課程代號請輸入課程代號(1至至3之間的數(shù)字之間的數(shù)字):);Scanner in = new Scanner(System.in);try int courseCode = in.nextInt();switch (courseCode) case 1: System.out.println(C#編程編程); break;case 2: System.ou

11、t.println(Java編程編程); break;case 3: System.out.println(SQL基礎(chǔ)基礎(chǔ)); catch (Exception ex) System.out.println(輸入不為數(shù)字輸入不為數(shù)字!);System.out.println(歡迎提出建議歡迎提出建議!);輸入:輸入:2Java編程編程歡迎提出建議歡迎提出建議!控制臺輸出控制臺輸出Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理try/catch塊塊-2trycatch異常類型匹配異常類型匹配 try/catch 塊后的代碼段塊后的代碼段進入進入catch塊塊public void

12、 method()try / 代碼段代碼段 1 / 產(chǎn)生異常的代碼段產(chǎn)生異常的代碼段 2 / 代碼段代碼段 3 catch (異常類型異常類型 ex) / 對異常進行處理的代碼段對異常進行處理的代碼段4/ 代碼段代碼段5使用使用try/catch塊捕獲異常,分為三種情況:塊捕獲異常,分為三種情況:第二種情況第二種情況 產(chǎn)生異常對象產(chǎn)生異常對象 程序繼續(xù)執(zhí)行程序繼續(xù)執(zhí)行異常是一種特殊的對象,異常是一種特殊的對象,類型為類型為java.lang.Exception或其子類或其子類 發(fā)生異常發(fā)生異常Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理使用示例模擬第二種情況:使用示例模擬第二

13、種情況:public class MyException public static void main(String args) System.out.print(請輸入課程代號請輸入課程代號(1至至3之間的數(shù)字之間的數(shù)字):);Scanner in = new Scanner(System.in);try int courseCode = in.nextInt();switch (courseCode) case 1:System.out.println(C#編程編程);break;case 2:System.out.println(Java編程編程);break;case 3:Syste

14、m.out.println(SQL基礎(chǔ)基礎(chǔ)); catch (Exception ex) System.out.println(輸入不為數(shù)字輸入不為數(shù)字!); ex.printStackTrace();System.out.println(歡迎提出建議歡迎提出建議!);輸入:輸入:B輸入不為數(shù)字輸入不為數(shù)字!異常堆棧信息異常堆棧信息歡迎提出建議歡迎提出建議!控制臺輸出控制臺輸出Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理printStackTrace的堆棧跟蹤功能顯示出程序運行到當前的堆棧跟蹤功能顯示出程序運行到當前類的執(zhí)行流程類的執(zhí)行流程public class MyExc

15、eption public static void main(String args) System.out.print(請輸入課程代號請輸入課程代號(1至至3之間的數(shù)字之間的數(shù)字):); Scanner in = new Scanner(System.in); try int courseCode = in.nextInt(); /此處代碼省略此處代碼省略 catch (Exception ex) System.out.println(輸入不為數(shù)字!輸入不為數(shù)字!); ex.printStackTrace(); System.out.println(歡迎提出建議歡迎提出建議!); java.

16、util.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:840)at java.util.Scanner.next(Scanner.java:1461)at java.util.Scanner.nextInt(Scanner.java:2091)at java.util.Scanner.nextInt(Scanner.java:2050)at s2jsp.sg.ch05. MyException.main(MyException.java:23)異常類型異常類型異常堆棧信息異常堆棧信息在此方法中拋出了異常在此方

17、法中拋出了異常Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理try/catch塊塊-3trycatch異常類型不匹配異常類型不匹配 try/catch 塊后的代碼段塊后的代碼段程序中斷運行程序中斷運行 發(fā)生異常發(fā)生異常public void method()try / 代碼段代碼段 1 / 產(chǎn)生異常的代碼段產(chǎn)生異常的代碼段 2 / 代碼段代碼段 3 catch (異常類型異常類型 ex) / 對異常進行處理的代碼段對異常進行處理的代碼段4/ 代碼段代碼段5使用使用try/catch塊捕獲異常,分為三種情況:塊捕獲異常,分為三種情況:第三種情況第三種情況 產(chǎn)生異常對象產(chǎn)生異常對象

18、 Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理使用示例模擬第三種情況:使用示例模擬第三種情況:public class MyException2 public static void main(String args) System.out.print(請輸入課程代號請輸入課程代號(1至至3之間的數(shù)字之間的數(shù)字):);Scanner in = new Scanner(System.in);try int courseCode = in.nextInt();switch (courseCode) case 1: System.out.println(C#編程編程); break

19、;case 2: System.out.println(Java編程編程); break;case 3: System.out.println(SQL基礎(chǔ)基礎(chǔ)); catch (NullPointerException ex) System.out.println(輸入不為數(shù)字!輸入不為數(shù)字!);System.out.println(歡迎提出建議!歡迎提出建議!);輸入:輸入:B程序中斷運行程序中斷運行Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理finally語句語句finally語句定義一個總是被執(zhí)行的代碼塊,而不管有沒有出語句定義一個總是被執(zhí)行的代碼塊,而不管有沒有出現(xiàn)異

20、?!,F(xiàn)異常。public void work() try 開門 工作8個小時 /可能會拋出異常 catch(DiseaseException e) 去醫(yī)院看病; finally 關(guān)門 public void work() try 開門 工作8個小時/可能會拋出異常 關(guān)門 catch(DiseaseException e) 去醫(yī)院看病; Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理try/catch/finally -1在在try/catch塊后加入塊后加入finally塊,可以確保無論是否發(fā)生異常,塊,可以確保無論是否發(fā)生異常,finally塊中的代碼總能被執(zhí)行塊中的代碼總能

21、被執(zhí)行try 塊塊 finally 塊塊 catch 塊塊 無異常無異常 有異常有異常 Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理try/catch/finally-2 public class MyException3 public static void main(String args) System.out.print(請輸入課程代號請輸入課程代號(1至至3之間的數(shù)字之間的數(shù)字):);Scanner in = new Scanner(System.in);try int courseCode = in.nextInt();switch (courseCode) ca

22、se 1: System.out.println(C#編程編程); break;case 2: System.out.println(Java編程編程); break;case 3: System.out.println(SQL基礎(chǔ)基礎(chǔ)); catch (Exception ex) System.out.println(輸入不為數(shù)字!輸入不為數(shù)字!); finally System.out.println(歡迎提出建議!歡迎提出建議!);輸入:輸入:2Java編程編程歡迎提出建議歡迎提出建議!控制臺輸出控制臺輸出輸入:輸入:B輸入不為數(shù)字輸入不為數(shù)字!歡迎提出建議歡迎提出建議!第一種情況:第一

23、種情況:無異常無異常第二種情況:第二種情況:有異常有異常 Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理編寫一個類編寫一個類ExceptionTest1,在,在main方法中使方法中使用用try、catch、finally: 在try塊中,編寫被0除的代碼 在catch塊中,捕獲被0除所產(chǎn)生的異常,并且打印異常信息 在finally塊中,打印一條語句(“程序運行結(jié)束”)Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理多重多重catch塊塊-1一段代碼可能會引發(fā)多種類型的異常一段代碼可能會引發(fā)多種類型的異常當引發(fā)異常時,會按順序來查看每個當引發(fā)異常時,會按順序來查看

24、每個 catch 語句,語句,并執(zhí)行第一個與異常類型匹配的并執(zhí)行第一個與異常類型匹配的catch語句語句執(zhí)行其中的一條執(zhí)行其中的一條 catch 語句之后,其后的語句之后,其后的 catch 語句將被忽略語句將被忽略Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理public void method()try / 代碼段代碼段 / 產(chǎn)生異常產(chǎn)生異常(異常類型異常類型2) catch (異常類型異常類型1 ex) / 對異常進行處理的代碼段對異常進行處理的代碼段 catch (異常類型異常類型2 ex) / 對異常進行處理的代碼段對異常進行處理的代碼段 catch (異常類型異常類

25、型3 ex) / 對異常進行處理的代碼段對異常進行處理的代碼段/ 代碼段代碼段多重多重catch塊塊 -2try 與異常類型與異常類型1不匹配不匹配try/catch 塊后的代碼段塊后的代碼段發(fā)生異常發(fā)生異常產(chǎn)生異常對象產(chǎn)生異常對象catch與異常類型與異常類型2匹配匹配catchcatch程序繼續(xù)執(zhí)行程序繼續(xù)執(zhí)行進入進入catch塊塊Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理多重多重catch塊塊-3public class MyException4 public static void main(String args) Scanner in = new Scanner

26、(System.in);trySystem.out.print(“請輸入互聯(lián)網(wǎng)專業(yè)的總學時:請輸入互聯(lián)網(wǎng)專業(yè)的總學時:);int totalTime = in.nextInt(); /總學時總學時System.out.print(“請輸入互聯(lián)網(wǎng)專業(yè)的課程數(shù)目:請輸入互聯(lián)網(wǎng)專業(yè)的課程數(shù)目:);int totalCourse = in.nextInt(); /課程數(shù)目課程數(shù)目System.out.println(“互聯(lián)網(wǎng)專業(yè)的各課程的平均學時為:互聯(lián)網(wǎng)專業(yè)的各課程的平均學時為: + totalTime / totalCourse); catch (InputMismatchException e1

27、) System.out.println(輸入不為數(shù)字輸入不為數(shù)字!); catch (ArithmeticException e2) System.out.println(課程數(shù)目不能為零課程數(shù)目不能為零!); catch (Exception e) System.out.println(發(fā)生錯誤發(fā)生錯誤:+e.getMessage();輸入:輸入:270 H 在安排在安排catch語句的順序時,首先應(yīng)該捕獲最特殊的異常,語句的順序時,首先應(yīng)該捕獲最特殊的異常, 然后再逐漸一般化,即先子類后父類然后再逐漸一般化,即先子類后父類 輸出:輸出:輸入不為數(shù)字輸入不為數(shù)字!進入第一個進入第一個cat

28、ch塊塊輸入:輸入:270 0 輸出:輸出:課程數(shù)目不能為零課程數(shù)目不能為零!進入第二個進入第二個catch塊塊Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理5.2 聲明異常聲明異常如果一個方法不想處理異常,或者異常沒有在當前如果一個方法不想處理異常,或者異常沒有在當前的的try catch中處理,則它必須將異常拋棄給上一中處理,則它必須將異常拋棄給上一級調(diào)用它的方法。級調(diào)用它的方法。可以通過可以通過throws 語句將異常拋語句將異常拋向上級調(diào)用方法。向上級調(diào)用方法。如果異常被回溯到如果異常被回溯到main方法仍舊沒有處理,則程序方法仍舊沒有處理,則程序?qū)⒊鲥e,終止運行。將出

29、錯,終止運行。Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理聲明異常聲明異常public class ExTester static int method1(int x) throws Exception if(x0)throw new Exception(x0); return +x; static int method2(int x)throws Exception return method1(x); public static void main(String args)throws Exception System.out.println(method2(-1); m

30、ain()method2()method1()方法調(diào)用堆棧異常處理采用堆棧機制Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理聲明異常聲明異常public class Teacher private String id;/ 教師編號教師編號,長度應(yīng)為長度應(yīng)為7 public void setId(String pId) throws IllegalArgumentException / 判斷教師編號的長度是否為判斷教師編號的長度是否為7 if (pId.length() = 7) id = pId; else throw new IllegalArgumentException(

31、參數(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)生異常 Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理拋出異常拋出異常在JAVA程序中,引發(fā)異

32、常共有以下兩種方式l使用顯式 throw 語句來引發(fā)異常。在此情況下,控制權(quán)將無條件轉(zhuǎn)到處理異常的部分代碼l使用語句或表達式在執(zhí)行過程中激發(fā)了某個異常的條件,使得操作無法正常結(jié)束,從而引發(fā)異常throw語句用于立即無條件地引發(fā)異常,語法格式為:throw 異常對象;Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理拋出異常拋出異常如果在當前環(huán)境無法解決一個異常,就要將其拋出,把異常如果在當前環(huán)境無法解決一個異常,就要將其拋出,把異常交給調(diào)用者處理交給調(diào)用者處理 public class Teacher private String id; / 教師編號,長度應(yīng)為教師編號,長度應(yīng)為7

33、 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) Teacher teacher = new Teacher(); try teacher.setId(088); catch (IllegalArgumentException e

34、x) System.out.println(ex.getMessage(); 拋出異常拋出異常捕獲異常捕獲異常參數(shù)長度應(yīng)為參數(shù)長度應(yīng)為7!控制臺輸出控制臺輸出Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理編寫類編寫類ExceptionTest2: 定義兩個方法:go()和main() 在go方法聲明中要拋出異常,在該方法體內(nèi),拋出一個Exception對象 在main()方法中,調(diào)用go方法,使用try/catch捕獲go方法中拋出的異常Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理5.3 自定義異常類自定義異常類使用自定義異常的步驟:使用自定義異常的步驟:1.

35、通過繼承通過繼承java.lang.Exception類聲明自己的異常類;類聲明自己的異常類;2.在方法中生成自定義異常的實例,并用在方法中生成自定義異常的實例,并用throw語句拋出;語句拋出;3.在方法的聲明部分用在方法的聲明部分用throws語句聲明該方法可能拋出的異語句聲明該方法可能拋出的異常常import java.io.* ;class MyException extends Exception private int id ; public MyException(String message ,int id) super(message) ; this.id = id ; pu

36、blic int getId() return id ; Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理public class TestMyException public void regist(int num) throws MyException if(num 0) throw new MyException(人數(shù)不能為負值人數(shù)不能為負值,3) ; System.out.println(人數(shù):人數(shù): + num) ; public void manager() try regist(-100) ; catch(MyException e) System.out.prin

37、tln(錯誤!錯誤代碼:錯誤!錯誤代碼: + e.getId() ; e.printStackTrace() ; System.out.println(操作結(jié)束操作結(jié)束) ; public static void main(String args) TestMyException t = new TestMyException() ; t.manager() ; Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理用戶定義異常用戶定義異常用戶定義異常是通過擴展用戶定義異常是通過擴展Exception類或類或RuntimeException來創(chuàng)建的。來創(chuàng)建的。 class Answer

38、WrongException extends Exception private int result; public AnswerWrongException (int result) this.result=result; public int getResult() return result; Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理用戶定義異常用戶定義異常public class ExceptionTester public static void test(int x,int y,int z)throws AnswerWrongException if(x+y

39、!=z) throw new AnswerWrongException(z); System.out.println(x+y+=+z); public static void main(String args) try test(1,2,5); System.out.println(end); catch( AnswerWrongException e) System.out.println(result is wrong:+e.getResult(); e.printStackTrace(); Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理獲得異常信息獲得異常信息Except

40、ion提供了如下方法:提供了如下方法: toString() getMessage() printStackTrace()try test(1,2,5); System.out.println(end); catch( AnswerWrongException e) e.printStackTrace(); Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理異常處理流程異常處理流程finally語句不被執(zhí)行的唯一情況是程序先執(zhí)行了終止程序的語句不被執(zhí)行的唯一情況是程序先執(zhí)行了終止程序的System.exit()方法方法public static void main(String a

41、rgs) try System.out.println(Begin); System.exit(0); finally System.out.println(Finally); System.out.println(End);Java程序設(shè)計程序設(shè)計 第第6章章 JAVA異常處理異常處理常見異常常見異常ArithmeticException:數(shù)學異常:數(shù)學異常int a=12 / 0; /拋出拋出ArithmeticExceptionNullPointerException:空指針異常:空指針異常Date d= null;System.out.println(d.toString(); /拋出拋出NullPointerExceptionArrayIndexOutOfBoundsException:下標越界異常:下標越界異常int array=new int4;array0=1; array7=1; /拋出拋出ArrayIndexOutOfBoundsExceptionClassCastException:類型轉(zhuǎn)換異常:類型轉(zhuǎn)換異常:Animal animal=new Dog();Cat cat=(Animal)animal;Java程序設(shè)計程序

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論