高效處理Java異常的兩種方法

作者: BUILDER.COM

按照Java語言的定義,所謂異常(Exception)指的就是向調用方法(calling method)表示發生非正常情況的習慣方式。本文討論兩種在處理異常時可茲利用的技術:異常嵌套和捕捉適當的異常。

異常嵌套

你在試圖捕捉異常並打算扔出異常時該采取什麽措施呢?同時,你希望原始的異常信息可用嗎?

要回答以上的問題你不妨嘗試一下NestedException類。具體的編程並不難,唯一要做的無非是利用構造器並且重載printStackTrace()以便顯示出正確的數據。

此外,你還應當考慮封裝Throwable而非Exception類來創建更具有重用性的組件。之後,你可以創建NestedRuntimeException變量封裝Throwable但無需對其進行聲明。清單A顯示了完整的示例。

捕捉適當的異常

正確地處理異常並不是一項輕松的任務,這是因爲異常的處理有時會導致程序出現其他不明行爲。不過,以下三條規則可以幫助你避免錯誤處理異常所可能遭遇的風險。

規則 #1: 總是捕捉扔出異常的類型而不要理睬異常的超類。 清單B中的代碼片斷以示例的方式從錯誤編碼和正確編碼兩個角度進行了說明。

爲了遵守通常的代碼習慣,你可以采用Exception類的大寫字母作爲變量名,如下所示:

catch(FileNotFoundException fnfe)

以及

catch(SQLException sqle)

規則 # 2: 決不讓catch塊留空。在很多情況下雖然確實編寫了try/catch塊但在代碼的catch部分卻什麽都沒有做。或者,假如采用了日志API(Logging API),那麽請編寫代碼把異常寫到日志中。

清單C 顯示了以上編碼的錯誤方式和正確方式。

規則 # 3: 決不扔出Exception基類的實例。開發人員應當總是扔出自己創建的異常類。

扔出異常的API很難處理。在聲明方法扔出java.lang.Exception的情況下,清單A中所有的問題都會強加在API用戶的頭上,這樣他們就無法以一種專業的編程方式來處理異常。通過爲扔出API聲明Exception類的子類這一舉措,API開發人員就可以減輕用戶的負擔。

小結

以上提到的兩種技術在處理異常時還可能用得更好、更適當。嵌套技術令異常扔到另一異常的內部,而捕捉適當的異常令程序調試大大簡化。

Java編程中異常處理的特殊情況
1、不能在finally塊中執行return,continue等語句,否則會把異常“吃掉”;2、在try,catch中假如有return語句,則在執行return之前先執行finally塊 請大家下面的例子:...查看完整版>>Java編程中異常處理的特殊情況
 
休閑程序空間:趣說java處理異常的方式
  調用Java的方法就像你叫一個人去辦事,比如說你讓他去買東西,    那個人會警告你,買東西可以,但是會有問題,    比如說你給的錢不夠了,沒有你要買的東西沒有了什麽的,這些可能它會在後面throws出來...查看完整版>>休閑程序空間:趣說java處理異常的方式
 
關于Java異常處理機制的深入理解
  1 引子  try…catch…finally恐怕是大家再熟悉不過的語句了,而且感覺用起來也是很簡單,邏輯上似乎也是很輕易理解。不過,我親自體驗的“教訓”告訴我,這個東西可不是想象中的那麽簡單、聽話。不信?那你看看...查看完整版>>關于Java異常處理機制的深入理解
 
處理Java程序中沒有被捕獲的異常
  在我們的程序中並不是所有的異常都被捕捉,有些是因爲我們不想捕捉,因爲我們認爲那些異常沒必要捕捉    而有些是我們無法捕捉的,因爲我們不能確定它們會在什麽地方出現,例如像NullPointerException,Clas...查看完整版>>處理Java程序中沒有被捕獲的異常
 
關于java異常處理(講義)
  第16講:異常處理 16.1、簡介: 異常是程序執行時碰到的任何錯誤情況或意外行爲。 以下這些情況都可以引發異常:您的代碼或調用的代碼(如共享庫)中有錯誤,操作系統資源不可用,公共語言運行庫碰到意外...查看完整版>>關于java異常處理(講義)
 
處理Java程序中沒有被捕獲的異常
  在我們的程序中並不是所有的異常都被捕獲,有些是因爲我們不想捕獲,因爲我們認爲那些異常沒必要捕獲  而有些是我們無法捕獲的,因爲我們不能確定它們會在什麽地方出現,例如像NullPointerException,ClassCas...查看完整版>>處理Java程序中沒有被捕獲的異常
 
關于Java異常處理機制的深入理解
  1 引子  try…catch…finally恐怕是大家再熟悉不過的語句了,而且感覺用起來也是很簡單,邏輯上似乎也是很容易理解。不過,我親自體驗的“教訓”告訴我,這個東西可不是想象中的那麽簡單、聽話。不信?那你看看...查看完整版>>關于Java異常處理機制的深入理解
 
Java異常處理--不要忽略或遮掩異常
異常處理是Java的一個強大而實用的特性,使異常變得更加容易使用,但同時也使我們更不容易恰如其分的使用――《Practical Java》 Java的異常由try/catch/finally段組合,它們又可以任意嵌套(nest)。如果程序中有多...查看完整版>>Java異常處理--不要忽略或遮掩異常
 
關于java異常處理機制的深入理解
1 引子try…catch…finally恐怕是大家再熟悉不過的語句了,而且感覺用起來也是很簡單,邏輯上似乎也是很容易理解。不過,我親自體驗的“教訓”告訴我,這個東西可不是想象中的那麽簡...查看完整版>>關于java異常處理機制的深入理解
 
 
回到王朝網路移動版首頁