`

Java7异常新特性之mutilcatch

    博客分类:
  • Java
阅读更多

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

 

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

 

捕捉多种异常类型

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

 

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

 

 

// CopyToDatabaseOrFile.java 

import java.io.IOException; 

import java.sql.SQLException; 

public class CopyToDatabaseOrFile { 

 

public static void main(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 

} 

} 

 

static void copy() throws IOException, SQLException {

if (Math.random() < 0.5) 

throw new IOException("cannot copy to file"); 

else 

throw new SQLException("cannot copy to database"); 

} 

 

} 

  

清单1: CopyToDatabaseOrFile.java

 

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

try{
   copy();
}catch (IOException | SQLException ex){ 
  System.out.println(ex.getMessage());
}

 

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4
2
分享到:
评论
1 楼 裴小星 2011-03-25  
Java7发布了吗?我记得还没有吧。

相关推荐

    Java异常处理新特性

    Java 异常处理新特性是在 Java7 中引入的一种新的异常处理机制,它提供了一种更加简洁、可靠的方式来处理资源使用异常。这种机制称为 try-with-resources,实际上是自动调用资源的 close() 函数,从而实现资源的自动...

    java8新特性

    本视频为java8新特性,百度云链接和密码,永久有效,失效联系我

    Java 8 新特性 ---- 代码

    Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 ...

    java1.8新特性

    java8新特性

    JDK8新特性(pdf版)

    Optional是JDK8的新特性之一,用于解决空指针异常问题。例如: public static void main(String[] args) { String str = null; Optional&lt;String&gt; optional = Optional.ofNullable(str); if (optional.isPresent...

    java7 新技术代码示例

    第三个新特性是switch语句对String的支持。在Java 7之前,switch只能用于int、char、枚举类型,但在Java 7之后,可以直接对String进行switch操作,使得处理字符串相关的条件判断更加方便。例如: ```java String day...

    2018最新 Java9新特性详解视频

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

    JDK7新特性(完整篇)

    Java Development Kit (JDK) 7 是 Java 编程语言的一个重大更新,包含了多项新特性,旨在提升开发者的效率、程序的性能以及对现代计算环境的支持。以下是对这些特性的详细解析: 1. **JDK7新特性&lt;一&gt;概述** JDK7的...

    jdk7新特性jdk8新特性

    Java 7和8引入了许多新...总结,Java 7和8的新特性极大地增强了Java平台的现代性和开发效率,特别是在资源管理、异常处理、并发编程以及函数式编程方面。通过使用这些新特性,开发者可以编写出更简洁、更高效的代码。

    Java8新特性之Base64详解_动力节点Java学院

    Java8新特性之Base64详解_动力节点Java学院,动力节点口口相传的Java黄埔军校

    Java SE 6 新特性 HTTP 增强

    Java SE 6 新特性 HTTP 增强.htm

    java throw抛出异常实例二

    在Java编程语言中,异常处理是一项关键特性,用于处理程序执行期间可能出现的错误或不正常情况。`throw`关键字在Java中被用来显式地抛出一个异常。当我们遇到一个预期之外的情况,或者某些条件不满足时,可以使用`...

    利用java filter 实现业务异常拦截源码

    利用java filter 实现业务异常拦截 跳转到错误信息提示页面 我们在做项目中肯定都会遇到自定义业务异常 ,然后将业务异常信息跳转的统一的信息提示页面的情况,比如我们在struts的时候我们会用到struts的异常处理...

    Java7开发文档

    Java 7,全称为Java SE 7 (Java Platform, Standard Edition 7),是Java编程语言的一个重要版本,由Oracle公司发布于2011...通过深入阅读和理解这些文档,开发者能够更好地利用Java 7的新特性,编写高效、健壮的代码。

    java1-7

    10. **Java 7的新特性**:Java 7引入了一些新特性,如Try-with-resources语句、多租户区域(Multi-Release JARs)、字符串inswitch、钻石操作符()等,III-02.mp3可能详细解释了这些新特性及其使用场景。...

    Java8新特性之lambda_动力节点Java学院整理

    Java8新特性之lambda_动力节点Java学院整理,动力节点口口相传的Java黄埔军校

    java7运行库

    这个版本发布于2011年,引入了一系列重要的新特性和改进,旨在提升开发者的效率、性能优化以及语言功能的增强。以下是对Java 7运行库及其包含的子文件"java7运行库.exe"的详细解释: 1. **Java虚拟机(JVM)**:...

    Java7源代码

    Java 7,全称为Java Platform, Standard Edition 7 (Java SE 7),是Java编程语言的一个重要版本,由Oracle公司发布于2011年。这个版本带来了许多新特性、改进和优化,对开发者的工作效率和程序性能都有显著提升。在...

Global site tag (gtag.js) - Google Analytics