10.2.3 Java 7提供的多异常捕获机制
10.2.3 Java 7提供的多异常捕获机制
在Java 7以前,每个catch块只能捕获一种类型的异常;但从Java 7开始,一个catch块可以捕获多种类型的异常。
使用一个catch块捕获多种类型的异常时需要注意如下两个地方。
- 捕获多种类型的异常时,多种异常类型之间用竖线(
|)隔开。 - 捕获多种类型的异常时,异常变量有隐式的
final修饰,因此程序不能对异常变量重新赋值 
示例程序
下面程序示范了Java 7提供的多异常捕获。
1  | public class MultiExceptionTest  | 
上面程序中使用了IndexOutOfBoundsException|NumberFormatException|ArithmeticException来定义异常类型,这就表明该catch块可以同时捕获这三种类型的异常。
单异常捕获可以对异常变量重新赋值
- 捕获多种类型的异常时,异常变量使用隐式的
final修饰,final修饰的变量初始化后就无法更改,因此上面程序中1号代码将产生编译错误; - 捕获一种类型的异常时,异常变量没有
final修饰,因此上面程序中2号代码完全正确。 
总结
Java 7后catch块可以捕获多个异常,捕获多异常时,每个异常以竖杠分隔,多个异常变量隐式使用final修饰,不可以在捕获多异常的catch块中给异常变量重新赋值。