`

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发布了吗?我记得还没有吧。

相关推荐

    Java8视频新特性 百度云

    Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性

    第7章 Java语言类的特性(第7版).pptx

    第7章 Java语言类的特性(第7版)第7章 Java语言类的特性(第7版)第7章 Java语言类的特性(第7版)第7章 Java语言类的特性(第7版)第7章 Java语言类的特性(第7版)第7章 Java语言类的特性(第7版)第7章 Java语言类的特性(第7...

    超实用的Java新特性 - 2020最新版.zip

    2020年的Java 11、12、13和14版本也不例外,这些更新引入了多个引人注目的新特性。下面,我们将详细探讨这些版本中的关键变化。 首先,让我们从Java 11开始,这是长期支持(LTS)版本。其中最重要的新特性是HTTP...

    java7新特性功能表

    Java 7,全称为Java SE 7 (Java Platform, Standard Edition 7),是Java编程语言的一个重大更新,它在2011年发布,引入了一系列的新特性,旨在提高开发效率,增强程序性能,并且简化某些编程任务。让我们深入探讨...

    java7 新技术代码示例

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

    《Java8新特性学习教程》-(Java8指南)带您玩转Java8!!!.zip

    《Java8新特性学习教程》-(Java8指南)带您玩转Java8!!!Java8 新功能教程本教程翻译整理自https://github.com/winterbe/java8-tutorial★★★如果本教程对您有帮助,星一下吧,您还可以访问 《Java8新特性指导...

    java7 32位版

    Java 7,又称为Java SE 7 (Java Standard Edition 7),是Java的重要里程碑,它在2011年发布,带来了许多新特性和性能优化。以下是一些关键的Java 7特性: 1. **多语言支持**:Java 7引入了新的`try-with-resources`...

    尚硅谷Java视频Java8新特性视频教程

    尚硅谷Java视频Java8新特性视频教程,本Java视频涵盖了 Java8 的所有新特性:Lambda表达式、强大的 Stream API...Java8 的新特性使 Java 的运行速度更快、代码更少(Lambda 表达式)、便于并行、最大化减少空指针异常。

    jdk7新特性jdk8新特性

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

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

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

    Java8新特性之StampedLock_动力节点Java学院

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

    java throw抛出异常实例二

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

    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入门经典

    总之,《英文版Java 7入门经典》是一本全面且深入的教程,适合初学者和有一定经验的开发者阅读,无论你是想初次接触Java,还是希望深入理解Java 7的新特性,这本书都会是你宝贵的参考资料。通过系统学习,你将能够...

    java7 jdk7+jre7 64位

    这个版本在2011年推出,引入了许多新特性,增强了性能,并修复了大量的bug。Java 7的64位版本是为了在64位操作系统上运行Java应用程序而设计的,它可以利用更大的内存空间,对于处理大数据和高性能计算来说尤其重要...

    Java JDK 7学习笔记 PDF

    7. **动态语言支持**:JDK 7引入了 invokedynamic 指令,这是Java虚拟机的四大基础操作之一,用于支持动态类型语言的实现,如Groovy和JRuby。 8. **异常链**:JDK 7允许在捕获异常时保留原始异常信息,形成异常链,...

    java7源码包含sun

    Java 7的关键新特性包括: 1. **多路复用I/O(NIO.2)**:引入了新的`java.nio.file`包,提供了更丰富的文件操作API,支持文件路径操作、文件系统查询、文件观察服务等。 2. **try-with-resources语句**:这是对...

    java 7编程高级进阶代码

    《Java 7编程高级进阶代码》是一本深入探讨Java 7高级特性和编程实践的书籍,旨在帮助开发者提升在Java 7平台上的编程技能。本文将围绕Java 7的关键特性进行详细阐述,包括但不限于自动资源管理、开关表达式、字符串...

    ( Java核心技术 卷II 高级特性(原书第9版).zip )PDF 高清版

    书中会深入解析这些流的使用,以及NIO(非阻塞I/O)和NIO.2的新特性。 4. **集合框架**:Java集合框架是组织和操作数据的核心工具,包括List、Set、Map等接口及其实现类。书中会详细阐述它们的使用方法和设计模式,...

Global site tag (gtag.js) - Google Analytics