第05章異常處理(信息學(xué)院2014級(jí))_第1頁(yè)
第05章異常處理(信息學(xué)院2014級(jí))_第2頁(yè)
第05章異常處理(信息學(xué)院2014級(jí))_第3頁(yè)
第05章異常處理(信息學(xué)院2014級(jí))_第4頁(yè)
第05章異常處理(信息學(xué)院2014級(jí))_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第5章章 異常處理異常處理5.1 異常處理基礎(chǔ)異常處理基礎(chǔ)5.2 異常處理措施異常處理措施 武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)12目標(biāo)目標(biāo)理解異常的概念理解異常的概念運(yùn)用運(yùn)用 try 塊、塊、catch 塊和塊和 finally 塊處理塊處理異常異常運(yùn)用多重運(yùn)用多重 catch 塊處理異常塊處理異常運(yùn)用關(guān)鍵字運(yùn)用關(guān)鍵字 throw 處理異常處理異常運(yùn)用運(yùn)用JAVA編寫和使用自定義異常編寫和使用自定義異常武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)5.1 異常處理基礎(chǔ)異常處理基礎(chǔ)5.1.1 異常處理機(jī)制的必要性異常處理機(jī)制的必要性5.1.2 錯(cuò)誤和異常錯(cuò)誤和異常3

2、武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)5.1.1 異常處理機(jī)制的必要性異常處理機(jī)制的必要性n面向過程語言錯(cuò)誤處理方式的缺陷面向過程語言錯(cuò)誤處理方式的缺陷不進(jìn)行范圍檢查不進(jìn)行范圍檢查 采用采用if語句進(jìn)行事先判斷以防止出現(xiàn)錯(cuò)誤。語句進(jìn)行事先判斷以防止出現(xiàn)錯(cuò)誤。 n面向?qū)ο笳Z言異常處理的思想面向?qū)ο笳Z言異常處理的思想將程序正常代碼與錯(cuò)誤處理代碼分開。將程序正常代碼與錯(cuò)誤處理代碼分開。使程序具有處理錯(cuò)誤的能力。使程序具有處理錯(cuò)誤的能力。 41. 異常不可避免異常不可避免不要指望你的程序永遠(yuǎn)不會(huì)出錯(cuò)不要指望你的程序永遠(yuǎn)不會(huì)出錯(cuò)Java程序運(yùn)行過程中的異常事件可分為兩類:程序運(yùn)行過程中的

3、異常事件可分為兩類:錯(cuò)誤錯(cuò)誤(Error):JVM系統(tǒng)內(nèi)部錯(cuò)誤、資源耗盡等嚴(yán)重情況系統(tǒng)內(nèi)部錯(cuò)誤、資源耗盡等嚴(yán)重情況異常異常(Exception): 其它因編程錯(cuò)誤或偶然的外在因素導(dǎo)致的其它因編程錯(cuò)誤或偶然的外在因素導(dǎo)致的一般性問題,例如:一般性問題,例如:對(duì)負(fù)數(shù)開平方根對(duì)負(fù)數(shù)開平方根空指針訪問空指針訪問試圖讀取不存在的文件試圖讀取不存在的文件網(wǎng)絡(luò)連接中斷網(wǎng)絡(luò)連接中斷武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)2. Java語言是安全的語言是安全的Java語言提供嚴(yán)密的語法規(guī)則。語言提供嚴(yán)密的語法規(guī)則。Java在編譯和運(yùn)行時(shí)嚴(yán)格檢查錯(cuò)誤。在編譯和運(yùn)行時(shí)嚴(yán)格檢查錯(cuò)誤。 Java提供異常處

4、理機(jī)制。提供異常處理機(jī)制。Java提供內(nèi)存自動(dòng)管理方式。提供內(nèi)存自動(dòng)管理方式。 673. 理解異常的概念理解異常的概念-什么是異常?什么是異常?public class ExceptionRaised public ExceptionRaised() public int calculate( int operand1, int operand2) int result = operand1 / operand2; return result; public static void main(String args) ExceptionRaised obj = new ExceptionRai

5、sed(); int result = obj.calculate(9, 0); System.out.println(result); 異常情況異 常程序突然終止并將控制交給操作系統(tǒng)在運(yùn)行時(shí)發(fā)生的錯(cuò)誤 武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)5.1.2 錯(cuò)誤和異常錯(cuò)誤和異常錯(cuò)誤(錯(cuò)誤(error)指程序運(yùn)行時(shí)遇到的硬件或)指程序運(yùn)行時(shí)遇到的硬件或操作系統(tǒng)的錯(cuò)誤。操作系統(tǒng)的錯(cuò)誤。 Error錯(cuò)誤類錯(cuò)誤類異常(異常(exception)指在硬件和操作系統(tǒng)正)指在硬件和操作系統(tǒng)正常時(shí),程序遇到的運(yùn)行錯(cuò)。常時(shí),程序遇到的運(yùn)行錯(cuò)。 Exception異常異常類類81. 錯(cuò)誤例子publi

6、c class RaiseError public static void call(int i)System.out.println(i = + i);call(i+1);public static void main(String args) call(1);Exception in thread main java.lang.StackOverflowErrorat chapter05.RaiseError.call(RaiseError.java:7)at chapter05.RaiseError.call(RaiseError.java:7)public class RaiseExc

7、eption public static void main(String args) java.util.Date d = null;System.out.println(d.getTime();System.out.println(calclate(10,0);private static double calclate(int i, int j) return i/j;2. 異常例子Exception in thread main java.lang.NullPointerExceptionat chapter05.RaiseException.main(RaiseException.j

8、ava:6)3. Error/Exception層次圖層次圖124. Java異常類異常類 文件結(jié)束EOFException找不到文件FileNotFoundExceptionI/O 異常的根類IOException數(shù)字轉(zhuǎn)化格式異常,比如字符串到 float 型數(shù)字的轉(zhuǎn)換無效NumberFormatException不能加載所需的類ClassNotFoundException方法接收到非法參數(shù)IllegalArgumentException數(shù)組大小小于或大于實(shí)際的數(shù)組大小ArrayIndexOutOfBoundException嘗試訪問 null 對(duì)象成員NullPointerExceptio

9、n許多 java.lang 異常的基類RuntimeException異常層次結(jié)構(gòu)的根類Exception算術(shù)錯(cuò)誤情形,如以零作除數(shù)ArithmeticException線程中斷InterruptedException說 明異 常武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)5. 異常類定義異常類定義public class Throwable implements Serializable public Throwable() public Throwable(String message) public String getMessage() /獲得異常信息獲得異常信息 publi

10、c String toString() /獲得異常對(duì)象的描述信息獲得異常對(duì)象的描述信息 public void printStackTrace() /顯示異常棧跟蹤信息顯示異常棧跟蹤信息public class Exception extends Throwable public Exception() public Exception(String s)13武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)6. RuntimeException運(yùn)行異常類運(yùn)行異常類算術(shù)異常算術(shù)異常ArithmeticException:除數(shù)為:除數(shù)為0 空對(duì)象異??諏?duì)象異常NullPointerExcep

11、tionint a = null;a0 = 1; /對(duì)空數(shù)組中的元素進(jìn)行操作對(duì)空數(shù)組中的元素進(jìn)行操作String str = null;str.length() /調(diào)用空對(duì)象的方法調(diào)用空對(duì)象的方法類型強(qiáng)制轉(zhuǎn)換異常類型強(qiáng)制轉(zhuǎn)換異常ClassCastExceptionObject obj = new Object();String str = (String) obj;14武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)舉例舉例RuntimeException運(yùn)行異常類運(yùn)行異常類負(fù)數(shù)組長(zhǎng)度異常負(fù)數(shù)組長(zhǎng)度異常NegativeArraySizeExceptionint a = new int -

12、1;數(shù)組下標(biāo)越界異常數(shù)組下標(biāo)越界異常ArrayIndexOutOfBoundsExceptionint a = new int1;a1 = 1;字符串序號(hào)越界異常字符串序號(hào)越界異常StringIndexOutOfBoundsException abc.charAt(-1) 數(shù)值格式異常數(shù)值格式異常NumberFormatExceptionint j = Integer.parseInt(abc); 15武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)7. 程序?qū)﹀e(cuò)誤與異常的三種處理方式程序?qū)﹀e(cuò)誤與異常的三種處理方式程序不能處理錯(cuò)誤程序不能處理錯(cuò)誤程序應(yīng)避免而不捕獲的異常,如除數(shù)為程序應(yīng)避

13、免而不捕獲的異常,如除數(shù)為0、數(shù)組下標(biāo)越界等。數(shù)組下標(biāo)越界等。必須捕獲的異常,如網(wǎng)絡(luò)連接失敗必須捕獲的異常,如網(wǎng)絡(luò)連接失敗16武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)5.2 異常處理措施異常處理措施 5.2.1 異常處理語句異常處理語句5.2.2 拋出異常拋出異常5.2.3 自定義異常類自定義異常類1718在在 Java Java 應(yīng)用程序中,異常處理機(jī)制為:應(yīng)用程序中,異常處理機(jī)制為:拋出異常,捕捉異常拋出異常,捕捉異常。 拋出異常拋出異常:當(dāng)一個(gè)方法出現(xiàn)錯(cuò)誤引發(fā)異常時(shí),方法創(chuàng)建異常:當(dāng)一個(gè)方法出現(xiàn)錯(cuò)誤引發(fā)異常時(shí),方法創(chuàng)建異常對(duì)象并交付運(yùn)行時(shí)系統(tǒng)。對(duì)象并交付運(yùn)行時(shí)系統(tǒng)。 捕獲異

14、常捕獲異常:在方法拋出異常之后,運(yùn)行時(shí)系統(tǒng)將轉(zhuǎn)為尋找合:在方法拋出異常之后,運(yùn)行時(shí)系統(tǒng)將轉(zhuǎn)為尋找合適的異常處理器(適的異常處理器(exception handlerexception handler)。潛在的異常處理器是)。潛在的異常處理器是異常發(fā)生時(shí)依次存留在調(diào)用棧中的方法的集合。異常發(fā)生時(shí)依次存留在調(diào)用棧中的方法的集合。1. 異常處理機(jī)制19運(yùn)行時(shí)系統(tǒng)從發(fā)生異常的方法開始,運(yùn)行時(shí)系統(tǒng)從發(fā)生異常的方法開始,依次回查調(diào)用棧中的方依次回查調(diào)用棧中的方法法,直至找到含有合適異常處理器的方法并執(zhí)行。當(dāng)運(yùn)行時(shí),直至找到含有合適異常處理器的方法并執(zhí)行。當(dāng)運(yùn)行時(shí)系統(tǒng)遍歷調(diào)用棧而未找到合適系統(tǒng)遍歷調(diào)用棧而未

15、找到合適 的異常處理器,異常由的異常處理器,異常由JVMJVM處處理。同時(shí),意味著理。同時(shí),意味著JavaJava程序的終止。程序的終止。2. 異常捕獲的順序203. 異常處理語句異常處理語句-try 和和 catch 塊塊 2-1trycatch異常執(zhí)行 catch 后程序繼續(xù)正常運(yùn)行程序控制 引發(fā)代碼塊單 元21try 和和 catch 塊塊 2-2q try 和 catch 塊的用法public class ArithmeticExceptionDemo public ArithmeticExceptionDemo() private static int calculate(int i

16、, int j) return i / j;public static void main(String args) ArithmeticExceptionDemo obj = new ArithmeticExceptionDemo();try int result = obj.calculate(9, 0);System.out.println(result); catch (Exception e) System.err.println(發(fā)生異常:發(fā)生異常: + e.toString();e.printStackTrace();System.out.println(end);如果沒有如果沒

17、有trycatch,最后最后的的end能否輸出能否輸出呢?呢?223. finally 塊塊無異常異常trytry、catch catch 和和 finally finally 塊的執(zhí)行流程塊的執(zhí)行流程Finally語句塊是可選的234. 異常處理塊的一般形式異常處理塊的一般形式trytry / / 要監(jiān)控錯(cuò)誤的代碼塊要監(jiān)控錯(cuò)誤的代碼塊 methodGeneratingException(); methodGeneratingException(); catch (Exception e) catch (Exception e) / Exception e / Exception e 的異常處

18、理程序的異常處理程序 finally finally / / 在在 try try 結(jié)束前要執(zhí)行的代碼塊結(jié)束前要執(zhí)行的代碼塊 cleanup(); cleanup(); 5. 多重多重 catch 塊塊3-1一段代碼可能會(huì)生成多個(gè)異常一段代碼可能會(huì)生成多個(gè)異常當(dāng)引發(fā)異常時(shí),會(huì)按當(dāng)引發(fā)異常時(shí),會(huì)按順序來查看每個(gè)順序來查看每個(gè) catch catch 語句語句,并執(zhí)行第,并執(zhí)行第一個(gè)類型與異常類型匹配的語句一個(gè)類型與異常類型匹配的語句 (異常類繼承關(guān)系異常類繼承關(guān)系)執(zhí)行其中的一條執(zhí)行其中的一條 catch catch 語句之后,其他的語句之后,其他的 catch catch 語句將被語句將被忽略

19、忽略 24try . catch(ArrayIndexOutOfBoundsException e) catch(Exception e) public class RaiseMulException private static double calclate(int i, int j) return i / j;public static void main(String args) java.util.Date d = null;try System.out.println(calclate(10, 0);System.out.println(d.getTime(); catch (Ar

20、ithmeticException e) System.out.println(發(fā)生異常發(fā)生異常1: + e.toString(); catch (NullPointerException e) System.out.println(發(fā)生異常發(fā)生異常2: + e.toString();System.out.println(over);武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)Try catch舉例(多舉例(多catch-同級(jí)別)同級(jí)別)25try塊中如果有多個(gè)語句產(chǎn)生異常,第一個(gè)語句產(chǎn)生異常塊中如果有多個(gè)語句產(chǎn)生異常,第一個(gè)語句產(chǎn)生異常后,就會(huì)立即陷入到后,就會(huì)立即陷入到catch

21、塊中個(gè),后面產(chǎn)生異常的語句塊中個(gè),后面產(chǎn)生異常的語句不會(huì)執(zhí)行。不會(huì)執(zhí)行。public class RaiseMulException2 public static void main(String args) String str = 123a;java.util.Date d = null;try int i = Integer.parseInt(str); System.out.println(d.getTime(); catch (NumberFormatException ex) System.out.println(str + 字符串不能轉(zhuǎn)換為整數(shù)字符串不能轉(zhuǎn)換為整數(shù)); catch

22、 (Exception ex) ex.printStackTrace(); 武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)Try catch舉例(多舉例(多catch-不同級(jí)別)不同級(jí)別)26123a字符串不能轉(zhuǎn)換為整數(shù)異常被前一個(gè)異常被前一個(gè)catch捕獲,后捕獲,后面就不能在被捕獲了。面就不能在被捕獲了。武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)多重多重catch執(zhí)行流程執(zhí)行流程 2728 在toIntArray將字符串?dāng)?shù)組轉(zhuǎn)換到整形數(shù)組中使用了trycatchfinally語句?!纠?.1】 求數(shù)組元素的平均值。求數(shù)組元素的平均值。6. try-catch語句的范圍

23、語句的范圍try-catch目的是為了程序能從異常中恢復(fù)過來;目的是為了程序能從異常中恢復(fù)過來;需要對(duì)有可能產(chǎn)生異常的語句定位,并使用需要對(duì)有可能產(chǎn)生異常的語句定位,并使用try-catch,而不是把所有語句都包起來,而不是把所有語句都包起來 29public class TryScope public static void main(String args) String strings = 32, one, 10.8, 45 ;float sum = 0;try for (String s : strings)sum += Integer.parseInt(s);System.out.p

24、rintln(sum = + sum); catch (Exception e) e.printStackTrace();武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)Try catch范圍舉例范圍舉例30能否正確輸出能否正確輸出87.8呢?呢?武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)5.2.2 拋出異常拋出異常1. 拋出自定義異常對(duì)象的拋出自定義異常對(duì)象的throw語句語句throw 異常對(duì)象異常對(duì)象public void set(int year, int month, int day) if (month12) throw new Exception(月份錯(cuò)誤月份錯(cuò)

25、誤);31不想捕獲處理異常不想捕獲處理異常拋出異常拋出異常public class ThrowsinMethod public static void setMonth(int month) throws Exception if (month12) throw new Exception(月份錯(cuò)誤月份錯(cuò)誤);public static void main(String args) try setMonth(13); catch (Exception e) e.printStackTrace();武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)2. 方法里拋出異常舉例方法里拋出異常舉例3

26、2java.lang.Exception: 月份錯(cuò)誤月份錯(cuò)誤 at chapter05.ThrowsinMethod.setMonth(ThrowsinMethod.java:6) at chapter05.ThrowsinMethod.main(ThrowsinMethod.java:12)不再由系統(tǒng)拋出異常不再由系統(tǒng)拋出異常public class ThrowsOnMethod public static void doSomething() throws ClassNotFoundException Class clz = null;clz = Class.forName(RaiseEr

27、ror);System.out.println(over);public static void main(String args) try doSomething(); catch (ClassNotFoundException e) e.printStackTrace();System.out.println(over in main);武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)2. 方法上拋出異常舉例方法上拋出異常舉例33 Java語言安全性檢查,異常的拋出和處理不是可有可無的,是被強(qiáng)制要求的。語言安全性檢查,異常的拋出和處理不是可有可無的,是被強(qiáng)制要求的。 如上例中,如上例

28、中,Class.forName語句要求必須處理異常;語句要求必須處理異常; 如果如果doSomething不處理異常,而是簡(jiǎn)單拋出異常,則調(diào)用不處理異常,而是簡(jiǎn)單拋出異常,則調(diào)用doSomething的的main方法就要求處理異常。方法就要求處理異常。 如果如果main也不處理,只是拋出異常的話,就由也不處理,只是拋出異常的話,就由JVM來處理異常。來處理異常。345.2.3 自定義異常類自定義異常類自定義異常概念自定義異常概念使用自定義異常的時(shí)候使用自定義異常的時(shí)候JavaAPI提供的內(nèi)置異常不一定總能捕獲程序提供的內(nèi)置異常不一定總能捕獲程序中發(fā)生的所有錯(cuò)誤。有時(shí)會(huì)需要?jiǎng)?chuàng)建用戶自定義中發(fā)生的

29、所有錯(cuò)誤。有時(shí)會(huì)需要?jiǎng)?chuàng)建用戶自定義異常異常 自定義異常需要繼承自定義異常需要繼承Exception 及其子類及其子類1. 自定義異常類例子自定義異常類例子武漢理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第3版)35public class DateException extends Exception public DateException(String s) super(s); public DateException() super(); public void set(int year, int month, int day) throws DateException /設(shè)置正確日期設(shè)置

30、正確日期 if (year2500) throw new DateException(年份不合適,有效年份為年份不合適,有效年份為02500。); if (month12) throw new DateException(月份錯(cuò)誤月份錯(cuò)誤); if (daydaysOfMonth(year, month) throw new DateException(日期錯(cuò)誤日期錯(cuò)誤); this.aday.set(year, month, day); 當(dāng)調(diào)用一個(gè)拋出異常的方法,當(dāng)調(diào)用一個(gè)拋出異常的方法,調(diào)用者必須處理這個(gè)異常。調(diào)用者必須處理這個(gè)異常。 如構(gòu)造方法必須處理如構(gòu)造方法必須處理DateExcep

31、tion. Main方法方法new對(duì)象時(shí)對(duì)象時(shí)小結(jié)小結(jié)內(nèi)容和要求:內(nèi)容和要求:發(fā)現(xiàn)各種程序錯(cuò)誤,采取不同的手段排除錯(cuò)誤。發(fā)現(xiàn)各種程序錯(cuò)誤,采取不同的手段排除錯(cuò)誤。理解異常處理機(jī)制的運(yùn)行方式,掌握理解異常處理機(jī)制的運(yùn)行方式,掌握J(rèn)ava異常的拋異常的拋出、捕獲及處理方法。出、捕獲及處理方法。熟悉自定義異常在程序設(shè)計(jì)中的作用。熟悉自定義異常在程序設(shè)計(jì)中的作用。重點(diǎn):重點(diǎn):掌握掌握try語句捕獲異常并處理。語句捕獲異常并處理。1.難點(diǎn):難點(diǎn):捕獲并處理異常,拋出異常、使異常在方法捕獲并處理異常,拋出異常、使異常在方法間傳遞。間傳遞。1. 程序中的錯(cuò)誤有哪幾種?分別能夠在什么時(shí)刻被發(fā)現(xiàn)?習(xí)習(xí) 題題武漢

32、理工大學(xué)信息學(xué)院Java程序設(shè)計(jì)實(shí)用教程(第4版)37【答】 程序錯(cuò)誤按照性質(zhì)可分為3類:語法錯(cuò)、語義錯(cuò)、邏輯錯(cuò)。1) 語法錯(cuò):違反語法規(guī)范的錯(cuò)誤成為語法錯(cuò)( syntax error ),這類錯(cuò)誤通常在編譯時(shí)發(fā)現(xiàn),又稱為編譯錯(cuò),如標(biāo)識(shí)符未聲明、表達(dá)式中運(yùn)算符與操作數(shù)類型不兼容、變量賦值時(shí)的類型與聲明時(shí)的類型不匹配、括號(hào)不匹配、語句末缺少分號(hào)等。2) 語義錯(cuò):如果在程序的語法上正確,但在語義上存在錯(cuò)誤,則稱為語義錯(cuò)( semantic error),又稱為運(yùn)行錯(cuò)(run-time error),語義錯(cuò)不能被編譯系統(tǒng)發(fā)現(xiàn),只有到程序運(yùn)行時(shí)才能被發(fā)現(xiàn),如輸入數(shù)據(jù)格式錯(cuò)、除數(shù)為0錯(cuò)、給變量賦予超出其

33、范圍的值錯(cuò)等。3) 邏輯錯(cuò):如果程序通過編譯,可運(yùn)行,但運(yùn)行結(jié)果與期望值不符,則這類錯(cuò)誤稱為邏輯錯(cuò)(logic error),例如,由于循環(huán)條件不正確而沒有結(jié)果,循環(huán)次數(shù)不對(duì)等因素導(dǎo)致計(jì)算結(jié)果不正確等。2. Java為什么要采用異常處理機(jī)制?Java的異常處理是怎樣實(shí)現(xiàn)的?異常處理機(jī)制能夠解決程序中遇到的所有錯(cuò)誤嗎?哪些錯(cuò)誤不是異常處理能夠解決的?【答】 異常處理和捕獲和處理運(yùn)行時(shí)錯(cuò)誤的一種機(jī)制。異常處理機(jī)制使程序具有處理錯(cuò)誤的能力。 即使發(fā)生了運(yùn)行錯(cuò),應(yīng)用程序能夠捕獲異常并及時(shí)處理異常,使程序從運(yùn)行錯(cuò)誤中很好地恢復(fù)并繼續(xù)運(yùn)行,而不會(huì)導(dǎo)致程序運(yùn)行非正常終止。而且如果當(dāng)前方法沒有能力處理異常,還可以將異常轉(zhuǎn)交給調(diào)用者處理。 異常處理機(jī)制將運(yùn)行時(shí)錯(cuò)誤封裝成若干錯(cuò)誤類和異常類,并提供異常處理語句用于處理在程序中實(shí)現(xiàn)對(duì)運(yùn)行時(shí)錯(cuò)誤的發(fā)現(xiàn)和及時(shí)處理。 異常處理機(jī)制并不能解決程序中的所有錯(cuò)誤,例如內(nèi)存溢出、棧溢出

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論