程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 初探Java 7異常處理功能增強

初探Java 7異常處理功能增強

編輯:關於JAVA

Java異常處理語法是指是Java開發者最為頭疼的事情,也是整個Java程序語言中受到輿論攻擊最多的一部分。在Jdk7的研發過程中,對Java異常處理語法進行改進成為重要任務。

  此次變動增加了兩處對異常處理機制的細微增強:

  ◆Multicatch:開發者現在能夠在一個catch代碼塊中捕獲多個異常類型;

  ◆Final Rethrow:它可以讓開發者捕獲一個異常類型及其子類型,並且無需向方法聲明中增加拋出子句,就能重新將其拋出。

  過去我們在捕獲多個異常類型時,往往會使用以下類型的代碼:

  } catch (FirstException ex) {

  logger.error(ex);

  throw ex;

  } catch (SecondException ex) {

  logger.error(ex);

  throw ex;

  }

  但是以上代碼除了冗長外沒有什麼優點。一個解決辦法是找出這兩個異常類型的共同子類型,只對其進行捕獲並拋出。但是這種方法通常會捕獲一些你並不需要的異常。

  現在借助於新增的功能,開發者可以使用以下代碼:

  } catch (FirstException | SecondException ex) {

  logger.error(ex);

  throw ex;

  }

  這種代碼看上去要簡潔清晰的多。

  第二個增強功能要復雜一些。假如開發者希望捕獲所有異常,在進行必要的幾個操作後,再將其拋出。就代碼編寫而言並不是一件難事,但是開發者必須在方法聲明中增加一個拋出子句,來管理自己代碼發出的新異常。而現在借助於Final Rethrow,開發者無需增加一個異常拋出子句就能完成此項任務:

  try {

  // some code

  } catch (final Throwable ex) {

  // some more code

  throw ex;

  }

  通過使用final關鍵字,開發者可以拋出所需的准確動態類型異常。這樣如果一個IOException異常發生,那麼IOException 將被拋出。當然,開發者必須聲明不被捕獲的異常。如果開發者在try代碼塊(在//some more code部分)中沒有捕獲任何異常,拋出子句則與以前完全相同;反之如果捕獲到某些異常,開發者則可以進行相應處理。

  Java 7中的multi-catch是一個非常好的功能,但是final rethrow對程序員來說並不常用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved