新聞中心
【譯文】之前我們介紹過Java 7的***特性更新和代碼示例,今天我們來看看Java 7異常處理方面的功能增強。來自Coin項目的又一個細微語言增強已經(jīng)被包含在Java 7中:由谷歌專任工程師兼Java講師Neal Gafter提出的Java增強異常處理功能。Open JDK開發(fā)的***Joe Darcy已經(jīng)在其博客上宣布了這個變化。

創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為玉林企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,玉林網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
此次變動增加了兩處對異常處理機制的細微增強:
◆Multicatch:開發(fā)者現(xiàn)在能夠在一個catch代碼塊中捕獲多個異常類型;
◆Final Rethrow:它可以讓開發(fā)者捕獲一個異常類型及其子類型,并且無需向方法聲明中增加拋出子句,就能重新將其拋出。
過去我們在捕獲多個異常類型時,往往會使用以下類型的代碼:
- } catch (FirstException ex) {
- logger.error(ex);
- throw ex;
- } catch (SecondException ex) {
- logger.error(ex);
- throw ex;
- }
但是以上代碼除了冗長外沒有什么優(yōu)點。一個解決辦法是找出這兩個異常類型的共同子類型,只對其進行捕獲并拋出。但是這種方法通常會捕獲一些你并不需要的異常。
現(xiàn)在借助于新增的功能,開發(fā)者可以使用以下代碼:
- } catch (FirstException | SecondException ex) {
- logger.error(ex);
- throw ex;
- }
這種代碼看上去要簡潔清晰的多。
第二個增強功能要復(fù)雜一些。假如開發(fā)者希望捕獲所有異常,在進行必要的幾個操作后,再將其拋出。就代碼編寫而言并不是一件難事,但是開發(fā)者必須在方法聲明中增加一個拋出子句,來管理自己代碼發(fā)出的新異常。而現(xiàn)在借助于Final Rethrow,開發(fā)者無需增加一個異常拋出子句就能完成此項任務(wù):
- try {
- // some code
- } catch (final Throwable ex) {
- // some more code
- throw ex;
- }
通過使用final關(guān)鍵字,開發(fā)者可以拋出所需的準確動態(tài)類型異常。這樣如果一個IOException異常發(fā)生,那么IOException將被拋出。當然,開發(fā)者必須聲明不被捕獲的異常。如果開發(fā)者在try代碼塊(在//some more code部分)中沒有捕獲任何異常,拋出子句則與以前完全相同;反之如果捕獲到某些異常,開發(fā)者則可以進行相應(yīng)處理。
Java 7中的multi-catch是一個非常好的功能,但是final rethrow對程序員來說并不常用。
原文作者:Baptiste Wicht
原文題目:Better exception handling in Java 7 : Multicatch and final rethrow
【編輯推薦】
- Java 7 I/O新功能探秘:同步操作,多播與隨機存取
- 再探Java 7:***特性更新、代碼示例及性能測試
- Java 7的***類函數(shù):學(xué)習(xí)閉包的使用
- Java 7,下一代Java開發(fā)技術(shù)詳解
- Java 7 NIO2高性能Web服務(wù)器并發(fā)連接的處理
文章題目:初探Java7異常處理功能增強
網(wǎng)頁URL:http://m.fisionsoft.com.cn/article/dhjpech.html


咨詢
建站咨詢
