轉帖|其它|編輯:郝浩|2010-05-10 13:41:02.000|閱讀 572 次
概述:Java異常處理語法是指是Java開發者最為頭疼的事情,也是整個Java程序語言中受到輿論攻擊最多的一部分。在Jdk7的研發過程中,對Java異常處理語法進行改進成為重要任務。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
來自Coin項目的又一個細微語言增強已經被包含在Java 7中:由谷歌專任工程師兼Java講師Neal Gafter提出的Java增強異常處理功能。Open JDK開發的領導者Joe Darcy已經在其博客上宣布了這個變化。
此次變動增加了兩處對異常處理機制的細微增強:
◆Multicatch:開發者現在能夠在一個catch代碼塊中捕獲多個異常類型;
◆Final Rethrow:它可以讓開發者捕獲一個異常類型及其子類型,并且無需向方法聲明中增加拋出子句,就能重新將其拋出。
過去我們在捕獲多個異常類型時,往往會使用以下類型的代碼:
} catch (FirstException ex) { logger.error(ex); throw ex; } catch (SecondException ex) { logger.error(ex); throw ex; } |
但是以上代碼除了冗長外沒有什么優點。一個解決辦法是找出這兩個異常類型的共同子類型,只對其進行捕獲并拋出。但是這種方法通常會捕獲一些你并不需要的異常。
現在借助于新增的功能,開發者可以使用以下代碼:
這種代碼看上去要簡潔清晰的多。
第二個增強功能要復雜一些。假如開發者希望捕獲所有異常,在進行必要的幾個操作后,再將其拋出。就代碼編寫而言并不是一件難事,但是開發者必須在方法聲明中增加一個拋出子句,來管理自己代碼發出的新異常。而現在借助于Final Rethrow,開發者無需增加一個異常拋出子句就能完成此項任務:
通過使用final關鍵字,開發者可以拋出所需的準確動態類型異常。這樣如果一個IOException異常發生,那么IOException將被拋出。當然,開發者必須聲明不被捕獲的異常。如果開發者在try代碼塊(在//some more code部分)中沒有捕獲任何異常,拋出子句則與以前完全相同;反之如果捕獲到某些異常,開發者則可以進行相應處理。
try { // some code } catch (final Throwable ex) { // some more code throw ex; } |
} catch (FirstException | SecondException ex) { logger.error(ex); throw ex; } |
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網