历经4年,Java7终于和大家见面。关于Java7的新特性,详见这里。

Java7增强了Java的异常处理机制,主要表现为三个方面:捕捉多种异常类型(multicatch);重新抛出(rethrow)异常;简化资源清理(try-with-resources)

捕捉多种异常类型

从Java7开始,你就可以在一个catch块中捕捉多种类型的异常了。增加multicatch的特性的主要是为了降低重复代码和较少过大范围的异常捕捉(例如这样的捕捉 catch(Exception e))。

假如你正开发这样一个应用程序,这个程序可以灵活地将数据复制到数据库或者文件中,清单1(CopyToDatabaseOrFile.java)模拟了这种程序, 展示了在catch模块中存在重复代码的现象:

Java代码

// CopyToDatabaseOrFile.java

importjava.io.IOException;

importjava.sql.SQLException;

publicclassCopyToDatabaseOrFile {

publicstaticvoidmain(String[] args) {

try{

copy();

}catch(IOException ex) {

System.out.println(ex.getMessage());// additional handler code

}catch(SQLException ex) {

System.out.println(ex.getMessage());// additional handler code that's identical to the previous handler's // code

}

}

staticvoidcopy()throwsIOException, SQLException {

if(Math.random() <0.5)

thrownewIOException("cannot copy to file");

else

thrownewSQLException("cannot copy to database");

}

}

清单1: CopyToDatabaseOrFile.java

Java7克服了这种代码重复的问题。你只需在一个catch块中指定多个需要处理的异常,将这些异常按顺序排列,并用“|”分隔每个异常。如:

Java代码

try{

copy();

}catch(IOException | SQLException ex){

System.out.println(ex.getMessage());

}

现在,当copy()方法抛出任何一种类型,都会在catch块中被捕捉。

当在catch中声明多种异常时,被声明的异常默认为final的,也就是说不能再修改异常的引用。如上例中,不能再将ex赋值给另外一个异常(如ex=new MyException())。

【编辑推荐】

【责任编辑:金贺 TEL:(010)68476606】

点赞 0

java mutilcatch_Java 7异常新特性之mutilcatch相关推荐

  1. java的发展(8-17新特性整理)

    java java的诞生与历史: 简介:Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. ...

  2. 【JAVA拾遗】Java8新特性合辑

    [JAVA拾遗]Java8新特性合辑 文章目录 [JAVA拾遗]Java8新特性合辑 0. 逼逼 [--/--]126 Lambda Expressions & Virtual Extensi ...

  3. 详解Java 8十大新特性

    前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java ...

  4. Java 11 正式发布,新特性解读

    Java 11 正式发布,新特性解读 杨晓峰   2018 年 9 月 26 日 话题:Java语言 & 开发 不知不觉 JDK 11 已经发布了,从 9 开始,JDK 进入了让人学不动的更新 ...

  5. Java基础之Java8 新特性

    hp实训8.19_Java基础之Java8新特性 // 信息展示方法 ,接口中,就可以提供一种实现. 就可以使用这种功能.default void print() {System.out.printl ...

  6. 不停歇的Java即将发布JDK16新特性速览及从菜鸟到架构师[图]

    一.不停歇的Java即将发布JDK16新特性速览 当开发者深陷Java8版本之际,这边下一版本Java16有了最新的消息,与Java15一样,作为短期版本,Oracle仅提供6个月的支持. 根据发布计 ...

  7. 详解 Java 17中的新特性:“密封类”

    作者:程序猿DD 博客:https://blog.didispace.com/ Java 17推出的新特性Sealed Classes经历了2个Preview版本(JDK 15中的JEP 360.JD ...

  8. Java 17 版本的新特性

    Java 17 版本的新特性

  9. java 7 异常新特性_Java7的异常处理新特性-addSuppressed()方法等

    开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...

最新文章

  1. Elasticsearch 为什么能做到快速检索?— 倒排索引的秘密
  2. NVIDIA Tesla/Quadro和GeForce GPU的比较
  3. Flask实战2问答平台-完成登录注册功能
  4. Mac OS 的历史
  5. linux内核源码目录结构(2.6.35.7版本)
  6. python习题week3
  7. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...
  8. 【C++ primer】第七章 函数-C++的编程模块
  9. 盲人怎么用计算机打字,盲人打字键盘指法练习技巧和方法
  10. php比较asc,php中ASCⅡ码
  11. ovm安装过程及中断处理
  12. 【兴趣书签】科幻小说——《走出一日囚》
  13. 使用Ajax进行前后端交互(一)
  14. D. Harmonious Graph
  15. java程序员进阶必读书单
  16. JS前端图片压缩上传
  17. html空间进入动画界面,HTML5 / CSS3 Transform / Animation 示例页面
  18. java 邮件中文标题显示问号?
  19. php 微信红包瓜分,PHP实现微信红包金额拆分试玩的算法示例
  20. SAP动态安全库存设置

热门文章

  1. 【转】使用dos2unix批量转换文件
  2. 一个草根站长的创业故事·双喜临门
  3. 不为人知的网络编程(七):如何让不可靠的UDP变的可靠?
  4. 一步步完成jsRender + Spring MVC + Nginx前后端分离示例
  5. 数据库执行计划慢导致I/O 慢
  6. 2亿QQ用户大调度背后的架构设计和高效运营(上)
  7. 示例演示数据压缩的效果
  8. 运行Qt release版本时出现“丢失QtCore4.dll”错误
  9. cmake 生成vc 项目文件
  10. BAPI:BAPI_CONTRACT_CREATE(内部合同创建)