Java 異常處理4
發(fā)表時(shí)間:2024-01-15 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]優(yōu)勢(shì)3:分組和區(qū)分錯(cuò)誤類型 因?yàn)樗性诔绦騼?nèi)部拋出的異常都是對(duì)象,異常的分組或分類是類繼承的自然結(jié)果。在Java平臺(tái)中一組相關(guān)異常類的例子是在java.io中定義的IOException和它的子類。IOException是最普通的IO異常管理類,并且它描述了在執(zhí)行I/O操作時(shí)所發(fā)生的任意的錯(cuò)誤...
優(yōu)勢(shì)3:分組和區(qū)分錯(cuò)誤類型
因?yàn)樗性诔绦騼?nèi)部拋出的異常都是對(duì)象,異常的分組或分類是類繼承的自然結(jié)果。在Java平臺(tái)中一組相關(guān)異常類的例子是在java.io中定義的IOException和它的子類。IOException是最普通的IO異常管理類,并且它描述了在執(zhí)行I/O操作時(shí)所發(fā)生的任意的錯(cuò)誤類型。它的子類描述了一些特殊的錯(cuò)誤。例如,F(xiàn)ileNotFoundException異常類代表不能在本地磁盤上找到一個(gè)文件。
一個(gè)方法能夠編寫特殊的異常處理器,使它能夠處理非常特殊的異常。FileNotFoundException異常類沒有子類,因此下面的異常處理器只能處理一種異常類型:
catch (FileNotFoundException e) {
...
}
一個(gè)方法能夠基于它的分組或通過在catch子句中所指定的任何異常的超類的一般類型來捕獲異常。例如,要捕獲所有的I/O異常,而不管它們的具體類型,就可以在異常處理器中指定一個(gè)IOException參數(shù):
catch (IOException e) {
...
}
這個(gè)處理器將捕獲所有的I/O異常,包括FileNotFoundException,EOFException等等。你能夠通過查詢傳遞給異常處理器的參數(shù)找到發(fā)生錯(cuò)誤的詳細(xì)信息。例如,打印堆棧執(zhí)行路線:
catch (IOException e) {
e.printStackTrace(); // output goes to Sytem.err
e.printStackTrace(System.out); // send trace to stdout
}
你甚至可以創(chuàng)建一個(gè)能夠處理任意類型的異常的異常處理器:
catch (Exception e) { // a (too) general exception handler
...
}
Exception類是Throwable類結(jié)構(gòu)中的頂級(jí)類,因此,這個(gè)處理器將捕獲除了那些被特定處理器捕獲的異常以外的異常。你可能想你的程序是否都是這種處理異常的方法,例如,為用戶打印錯(cuò)誤消息并且退出。
但是,在大多數(shù)情況下,你需要異常處理器來盡可能的處理精確一些。原因是在處理器決定最好的恢復(fù)策略之前,必須做第一件是判斷發(fā)生異常的類型是什么。在沒有捕獲特定錯(cuò)誤的情況下,處理器必須有效的提供任意的可能性。Exception 處理器是最一般的異常處理器,使用這個(gè)處理器使得代碼捕獲和處理更多的程序員沒有預(yù)料到的錯(cuò)誤傾向,從而使得處理器沒有目的性。
象我們展示的一樣,你能夠創(chuàng)建異常組,并且用一般化的方式來處理異常,或者使用特定異常類型來區(qū)分異常并且用精確的方式來處理異常。
捕獲和處理異常
這段向說明怎樣使用異常處理器的三個(gè)組成部分-try,catch和finally塊來編寫異常處理器。這段最后舉一個(gè)例子,并且分析在不同的情況下發(fā)生了什么。