小编典典
Java 7及更高版本
从Java
7开始,支持多异常捕获。
语法为:
try {
// stuff
} catch (Exception1 | Exception2 ex) {
// Handle both exceptions
}
的静态类型ex是列出的异常中最特殊的通用超类型。有一个很好的功能,如果您将其重新抛出ex,编译器就会知道只能抛出列出的异常之一。
Java 6及更早版本
在Java 7之前,有多种方法可以解决此问题,但是它们往往比较笨拙并且有局限性。
方法1
try {
// stuff
} catch (Exception1 ex) {
handleException(ex);
} catch (Exception2 ex) {
handleException(ex);
}
public void handleException(SuperException ex) {
// handle exception here
}
如果异常处理程序需要访问在之前声明的局部变量,则这会变得很混乱try。而且,如果处理程序方法需要重新引发异常(并进行了检查),则签名会遇到严重问题。具体来说,handleException必须声明为throwing
SuperException…这可能意味着您必须更改封闭方法的签名,依此类推。
方法#2
try {
// stuff
} catch (SuperException ex) {
if (ex i