📅  最后修改于: 2020-10-13 05:27:35             🧑  作者: Mango
Java允许您在单个catch块中捕获多个类型异常。它是Java 7中引入的,有助于优化代码。
您可以使用竖线(|)分隔catch块中的多个异常。
Java 7之前的一种旧方法,用于处理多个异常。
public class MultipleExceptionExample{
public static void main(String args[]){
try{
int array[] = newint[10];
array[10] = 30/0;
}
catch(ArithmeticException e){
System.out.println(e.getMessage());
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(e.getMessage());
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}
输出:
/ by zero
Java 7为我们提供了什么:
public class MultipleExceptionExample{
public static void main(String args[]){
try{
int array[] = newint[10];
array[10] = 30/0;
}
catch(ArithmeticException | ArrayIndexOutOfBoundsException e){
System.out.println(e.getMessage());
}
}
}
输出:
/ by zero
public class MultipleExceptionExample{
public static void main(String args[]){
try{
int array[] = newint[10];
array[10] = 30/0;
}
catch(Exception | ArithmeticException | ArrayIndexOutOfBoundsException e){
System.out.println(e.getMessage());
}
}
}
输出:
Compile-time error: The exception ArithmeticException is already caught by the alternative Exception
因此,在这里,以防万一您捕获多个异常,请遵循一般化的规则,以更加专业化。这意味着,如果您使用的是超级(通用)类,请不要使用子(专用)类。
注意-处理多个异常类型的catch块使catch参数隐式最终。在上面的示例中,catch参数“ e”是最终的,因此您不能为其分配任何值。