| 導購 | 订阅 | 在线投稿
分享
 
 
 

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

來源:互聯網  2008-05-31 12:11:05  評論

作者: 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開發人員就可以減輕用戶的負擔。

小結

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

作者: 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開發人員就可以減輕用戶的負擔。 小結 以上提到的兩種技術在處理異常時還可能用得更好、更適當。嵌套技術令異常扔到另一異常的內部,而捕捉適當的異常令程序調試大大簡化。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有