彩票走势图

增强Java 7异常处理功能

转帖|其它|编辑:郝浩|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@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP