明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java 異常處理4

[摘要]優(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ā)生了什么。




標(biāo)簽:Java 異常處理4