各位,我有一些关于finally的疑问想请教一下,以下是关于finally的一段程序?
public class ExceptionTest{ public static void main(String args[]){
final int a = 10;
final int b = 0; try{
System.out.println("The result is: "+(a/b));
}
catch(Exception e1){
e1.printStackTrace();
}
finally{
try{
System.out.println("The result is "+(a/b));
}
catch(Exception e2){
System.out.println("Catch Exception");
} System.out.println("The result is 0");
}
}
}我的问题就是:
1.为什么finally块里面在碰到异常之后还会执行:System.out.println("The result is 0");不是应该
在执行catch语句块之后就完成了吗?2.如果finally语句块里面的东西不管怎么都会被执行到,那么finally里面的异常可不可以不用捕获?
public class ExceptionTest{ public static void main(String args[]){
final int a = 10;
final int b = 0; try{
System.out.println("The result is: "+(a/b));
}
catch(Exception e1){
e1.printStackTrace();
}
finally{
try{
System.out.println("The result is "+(a/b));
}
catch(Exception e2){
System.out.println("Catch Exception");
} System.out.println("The result is 0");
}
}
}我的问题就是:
1.为什么finally块里面在碰到异常之后还会执行:System.out.println("The result is 0");不是应该
在执行catch语句块之后就完成了吗?2.如果finally语句块里面的东西不管怎么都会被执行到,那么finally里面的异常可不可以不用捕获?
就算你将finally的代码拿出了,按照你的写法,还是会System.out.println("The result is 0");