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