📜  Java7 捕获多个异常

📅  最后修改于: 2020-10-13 05:27:35             🧑  作者: Mango

Java 7捕获多个异常

Java允许您在单个catch块中捕获多个类型异常。它是Java 7中引入的,有助于优化代码。

您可以使用竖线(|)分隔catch块中的多个异常。

Java 7之前的一种旧方法,用于处理多个异常。

捕获多个异常类型示例1

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

捕获多个异常类型示例2

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

捕获多个异常类型示例3

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”是最终的,因此您不能为其分配任何值。