`

Java7新特性之增强的异常处理功能

阅读更多

 

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

  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对程序员来说并不常用。

 

分享到:
评论

相关推荐

    2018最新 Java9新特性详解视频

    14.新特性7:异常处理try结构的使用升级 15.新特性8:下划线命名标识符的限制 16.新特性9:String底层存储结构的变化 17.新特性10:创建只读集合 18.新特性11:增强的Stream API 19.新特性11:Optional提供的stream...

    《疯狂Java讲义》随书光盘

    本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的...本书全面介绍了Java7的二进制数、棱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性

    疯狂Java讲义 第3版 完整版(Part3)

    本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java...本书全面介绍了Java7的二进制数、棱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性。

    Java讲义(第2版)

    深圳电信培训中心徐海蛟博士 Java/JavaEE 教学用的参考资料。...本书全面介绍了Java 7的二进制整数、菱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性。

    疯狂Java讲义 第3版 完整版(Part2)

    本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java...本书全面介绍了Java7的二进制数、棱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性。

    疯狂java讲义

    《疯狂Java讲义(附光盘第2版)》全面介绍了Java 7的二进制整数、菱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC 4.1新特性、NIO.2、AIO等新特性。 与第1版类似,《疯狂Java讲义(附光盘第2版)》...

    JAVA上百实例源码以及开源项目

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    JAVA上百实例源码以及开源项目源代码

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    疯狂java讲义.第二版.part5.rar

    本书全面介绍了Java7的二进制数、棱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性。[2] 与第一版类似,本书不单纯从知识角度来讲解Java,而是从解决问题的角度来...

    java学习路线.pdf

    Java的强类型机制、异常处理机制和垃圾自动收集等机制,都极大地增强了Java程序的健壮性。 Java的另一个重要特性是其安全性。Java提供了丰富的安全机制,以防止恶意代码的攻击。例如,Java对通过网络

    Java 8 新特性,一篇通俗易懂的文章

    - 速度更快 - 代码更少(增加了新的语法:==Lambda表达式==) ...- **Date Time API** − 加强对日期与时间的处理 - 便于并行 - 最大化减少空指针的异常: **Optional类** - Nashorn 引擎,允许在JVM上运行JS应用

    java开源包7

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java高手真经 光盘源码

    java高手真经 全光盘源代码 打包rar 第1部分(2个程序包) HelloWorld.zip 01.Java入门样例HelloWorld demo.zip 03.Eclipse入门样例demo 第2部分(3个程序包) ...javafeature.zip 29.Java5.0语言新特性

    Java基础知识点总结.docx

    无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的进步!!Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 ...Java 8新特性 347 Java 性能优化 362

    java开源包11

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包9

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

Global site tag (gtag.js) - Google Analytics