java mutilcatch_Java 7异常新特性之mutilcatch
历经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相关推荐
- java的发展(8-17新特性整理)
java java的诞生与历史: 简介:Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. ...
- 【JAVA拾遗】Java8新特性合辑
[JAVA拾遗]Java8新特性合辑 文章目录 [JAVA拾遗]Java8新特性合辑 0. 逼逼 [--/--]126 Lambda Expressions & Virtual Extensi ...
- 详解Java 8十大新特性
前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java ...
- Java 11 正式发布,新特性解读
Java 11 正式发布,新特性解读 杨晓峰 2018 年 9 月 26 日 话题:Java语言 & 开发 不知不觉 JDK 11 已经发布了,从 9 开始,JDK 进入了让人学不动的更新 ...
- Java基础之Java8 新特性
hp实训8.19_Java基础之Java8新特性 // 信息展示方法 ,接口中,就可以提供一种实现. 就可以使用这种功能.default void print() {System.out.printl ...
- 不停歇的Java即将发布JDK16新特性速览及从菜鸟到架构师[图]
一.不停歇的Java即将发布JDK16新特性速览 当开发者深陷Java8版本之际,这边下一版本Java16有了最新的消息,与Java15一样,作为短期版本,Oracle仅提供6个月的支持. 根据发布计 ...
- 详解 Java 17中的新特性:“密封类”
作者:程序猿DD 博客:https://blog.didispace.com/ Java 17推出的新特性Sealed Classes经历了2个Preview版本(JDK 15中的JEP 360.JD ...
- Java 17 版本的新特性
Java 17 版本的新特性
- java 7 异常新特性_Java7的异常处理新特性-addSuppressed()方法等
开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...
最新文章
- Elasticsearch 为什么能做到快速检索?— 倒排索引的秘密
- NVIDIA Tesla/Quadro和GeForce GPU的比较
- Flask实战2问答平台-完成登录注册功能
- Mac OS 的历史
- linux内核源码目录结构(2.6.35.7版本)
- python习题week3
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...
- 【C++ primer】第七章 函数-C++的编程模块
- 盲人怎么用计算机打字,盲人打字键盘指法练习技巧和方法
- php比较asc,php中ASCⅡ码
- ovm安装过程及中断处理
- 【兴趣书签】科幻小说——《走出一日囚》
- 使用Ajax进行前后端交互(一)
- D. Harmonious Graph
- java程序员进阶必读书单
- JS前端图片压缩上传
- html空间进入动画界面,HTML5 / CSS3 Transform / Animation 示例页面
- java 邮件中文标题显示问号?
- php 微信红包瓜分,PHP实现微信红包金额拆分试玩的算法示例
- SAP动态安全库存设置
热门文章
- 【转】使用dos2unix批量转换文件
- 一个草根站长的创业故事·双喜临门
- 不为人知的网络编程(七):如何让不可靠的UDP变的可靠?
- 一步步完成jsRender + Spring MVC + Nginx前后端分离示例
- 数据库执行计划慢导致I/O 慢
- 2亿QQ用户大调度背后的架构设计和高效运营(上)
- 示例演示数据压缩的效果
- 运行Qt release版本时出现“丢失QtCore4.dll”错误
- cmake 生成vc 项目文件
- BAPI:BAPI_CONTRACT_CREATE(内部合同创建)