初探Java 7异常处理功能增强

原创
开发 后端
Java异常处理语法是指是Java开发者最为头疼的事情,也是整个Java程序语言中受到舆论攻击最多的一部分。在Jdk7的研发过程中,对Java异常处理语法进行改进成为重要任务。

【51CTO译文】之前我们介绍过Java 7的***特性更新和代码示例,今天我们来看看Java 7异常处理方面的功能增强。来自Coin项目的又一个细微语言增强已经被包含在Java 7中:由谷歌专任工程师兼Java讲师Neal Gafter提出的Java增强异常处理功能。Open JDK开发的***Joe Darcy已经在其博客上宣布了这个变化。

此次变动增加了两处对异常处理机制的细微增强:

◆Multicatch:开发者现在能够在一个catch代码块中捕获多个异常类型;

◆Final Rethrow:它可以让开发者捕获一个异常类型及其子类型,并且无需向方法声明中增加抛出子句,就能重新将其抛出。

过去我们在捕获多个异常类型时,往往会使用以下类型的代码:

  1. catch (FirstException ex) {  
  2.     logger.error(ex);  
  3.     throw ex;  
  4. catch (SecondException ex) {  
  5.     logger.error(ex);  
  6.     throw ex;  
  7. }  

但是以上代码除了冗长外没有什么优点。一个解决办法是找出这两个异常类型的共同子类型,只对其进行捕获并抛出。但是这种方法通常会捕获一些你并不需要的异常。

现在借助于新增的功能,开发者可以使用以下代码:

  1. catch (FirstException | SecondException ex) {  
  2.     logger.error(ex);  
  3.     throw ex;  

这种代码看上去要简洁清晰的多。

第二个增强功能要复杂一些。假如开发者希望捕获所有异常,在进行必要的几个操作后,再将其抛出。就代码编写而言并不是一件难事,但是开发者必须在方法声明中增加一个抛出子句,来管理自己代码发出的新异常。而现在借助于Final Rethrow,开发者无需增加一个异常抛出子句就能完成此项任务:

  1. try {  
  2.     // some code  
  3. catch (final Throwable ex) {  
  4.     // some more code  
  5.     throw ex;  
  6. }  
  7.  

通过使用final关键字,开发者可以抛出所需的准确动态类型异常。这样如果一个IOException异常发生,那么IOException将被抛出。当然,开发者必须声明不被捕获的异常。如果开发者在try代码块(在//some more code部分)中没有捕获任何异常,抛出子句则与以前完全相同;反之如果捕获到某些异常,开发者则可以进行相应处理。

Java 7中的multi-catch是一个非常好的功能,但是final rethrow对程序员来说并不常用。

原文作者:Baptiste Wicht

原文题目:Better exception handling in Java 7 : Multicatch and final rethrow

【编辑推荐】

  1. Java 7 I/O新功能探秘:同步操作,多播与随机存取
  2. 再探Java 7:***特性更新、代码示例及性能测试
  3. Java 7的***类函数:学习闭包的使用
  4. Java 7,下一代Java开发技术详解
  5. Java 7 NIO2高性能Web服务器并发连接的处理
责任编辑:佚名 来源: 51CTO
相关推荐

2009-07-17 17:34:03

SwingWorker异常处理

2018-08-20 16:25:48

编程语言Java异常处理

2009-05-12 08:51:31

微软Windows 7操作系统

2012-12-21 10:48:20

Java异常

2023-12-11 14:19:00

Java程序异常

2011-09-14 14:15:25

IBMAIX 7操作系统

2009-04-27 16:07:07

Windows 7微软操作系统

2023-07-09 09:23:46

Java 21编程

2012-11-19 14:29:38

JavaJava异常异常处理

2011-07-05 10:20:38

java

2010-10-09 16:40:52

2023-05-28 13:09:47

Java异常应用

2011-03-28 09:17:14

Java 7mutilcatch

2011-04-06 10:52:51

Java异常处理

2023-10-10 13:23:18

空指针异常Java

2009-07-03 14:15:37

NetBeans6.7

2009-04-12 11:12:24

windowsCE

2013-04-07 10:01:26

Java异常处理

2011-07-21 15:20:41

java异常处理机制

2019-11-05 17:10:19

Java开发编程语言
点赞
收藏

51CTO技术栈公众号