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
块中给异常变量重新赋值。