历经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())。
分享到:
相关推荐
JAVA 7 中引入了多个新特性,其中之一是异常处理升级。在 Java 7 中,catch 代码块得到了升级,可以在单个 catch 块中处理多个异常。这种特性可以减少代码重复度,并生成更少的字节码。 在 Java 7 之前的版本中,...
Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性Java8新特性
Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 新特性 ---- 代码 Java 8 ...
java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述,java 8新特性描述java 8新特性描述,java...
根据提供的文件信息,我们可以深入探讨Java 8的新特性。这些特性极大地提高了Java语言的功能性和效率,使得开发人员能够编写更加简洁、高效的代码。 ### Java 8 新特性概述 #### Lambda 表达式 Lambda表达式是Java...
第三个新特性是switch语句对String的支持。在Java 7之前,switch只能用于int、char、枚举类型,但在Java 7之后,可以直接对String进行switch操作,使得处理字符串相关的条件判断更加方便。例如: ```java String day...
Java Development Kit (JDK) 7 是 Java 编程语言的一个重大更新,包含了多项新特性,旨在提升开发者的效率、程序的性能以及对现代计算环境的支持。以下是对这些特性的详细解析: 1. **JDK7新特性<一>概述** JDK7的...
Java 7和8引入了许多新...总结,Java 7和8的新特性极大地增强了Java平台的现代性和开发效率,特别是在资源管理、异常处理、并发编程以及函数式编程方面。通过使用这些新特性,开发者可以编写出更简洁、更高效的代码。
Java8新特性之Base64详解_动力节点Java学院,动力节点口口相传的Java黄埔军校
### Java 7的新特性 #### 1. **多捕获** Java 7引入了多捕获机制,允许在一个catch块中处理多种类型的异常,极大地简化了代码的编写。 #### 2. **自动资源管理** Java 7中的try-with-resources语句可以自动关闭...
,Java8新特性,Java8新特性,Java8新特性Java8新特性,Java8新特性,Java8新特性,Java8新特性,Java8新特性,Java8新特性,Java8新特性,Java8新特性Java8新特性
Java 7是一个重要的Java开发版本,它引入了许多新特性,以提高开发效率和代码的可读性。在本章中,我们将重点讨论以下几个关键特性: 1. **数值常量对下划线支持**:Java 7允许在数值常量中使用下划线`_`来分隔数字...
在Java编程语言中,异常处理是一项关键特性,用于处理程序执行期间可能出现的错误或不正常情况。`throw`关键字在Java中被用来显式地抛出一个异常。当我们遇到一个预期之外的情况,或者某些条件不满足时,可以使用`...
Java 7,全称为Java SE 7 (Java Platform, Standard Edition 7),是Java编程语言的一个重要版本,由Oracle公司发布于2011...通过深入阅读和理解这些文档,开发者能够更好地利用Java 7的新特性,编写高效、健壮的代码。
以下是对Java8新特性的详细解读: 1. **函数式编程**:Java8引入了Lambda表达式,这是一种简洁的匿名函数写法,使得处理集合数据更加方便。Lambda表达式可以作为参数传递,也可以作为方法的返回值。同时,函数接口...
总之,Java 7作为Java发展的一个重要里程碑,它的新特性大大增强了语言的功能和易用性。通过深入学习和实践,开发者可以充分利用这些新特性,提高开发效率,写出更加高效和健壮的代码。《深入理解Java 7》这本书无疑...
总之,《英文版Java 7入门经典》是一本全面且深入的教程,适合初学者和有一定经验的开发者阅读,无论你是想初次接触Java,还是希望深入理解Java 7的新特性,这本书都会是你宝贵的参考资料。通过系统学习,你将能够...
这个版本在2011年推出,引入了许多新特性,增强了性能,并修复了大量的bug。Java 7的64位版本是为了在64位操作系统上运行Java应用程序而设计的,它可以利用更大的内存空间,对于处理大数据和高性能计算来说尤其重要...
7. **动态语言支持**:JDK 7引入了 invokedynamic 指令,这是Java虚拟机的四大基础操作之一,用于支持动态类型语言的实现,如Groovy和JRuby。 8. **异常链**:JDK 7允许在捕获异常时保留原始异常信息,形成异常链,...
Java 7的关键新特性包括: 1. **多路复用I/O(NIO.2)**:引入了新的`java.nio.file`包,提供了更丰富的文件操作API,支持文件路径操作、文件系统查询、文件观察服务等。 2. **try-with-resources语句**:这是对...