java try catch 异常捕获练习
java try catch 异常捕获练习
1. 写出下列程序运行结果。
题目:
public class Test{
public static void mb_createException(){
throw new ArrayIndexOutOfBoundsException();
}
public static void mb_method(){
try{
mb_createException();
System.out.print("a");
}catch(ArithmeticException e){
System.out.print("b");
}finally{
System.out.print("c");
}
System.out.print("d");
}
public static void main(String args[]){
try{
mb_method();
}catch(Exception e){
System.out.print("m");
}
System.out.print("n");
}
}
解答:
- 程序运行后先进入主函数main(),执行try语句,通过如下所示的调用生成了异常ArrayIndexOut OfBoundsException,随后在mb_method()函数中便率先开始了异常捕获机制,“a”并未输出。
- 而ArrayIndexOutOfBoundsException 是 Exception类的子类,按照如下的顺序向上寻找对应的catch异常处理
-
异常生成后首先由mb_method()处理,由于ArithmeticException与该异常无直系关系,不会输出“b”,函数中的catch无法捕获,导致mb_method()后续代码无法执行,即无法打印“d”,在草草执行finally输出"c"后本函数便结束了。
-
回到主函数main(),通过三层寻找终于由Exception成功捕获了ArrayIndexOutOfBounds Exception,执行catch中的代码块输出"m",成功捕获异常后后续代码得以执行,输出“n”。
下为程序运行结果:
cmn