慕慕0277861
其实你如果理解了try,catch捕获异常的说法你就知道了,我来给题主分析一下这个代码的为啥会出现这个结果
1.程序异常了!
2.执行finally!
3.执行finally后面的语句!
4.执行finally!
5.执行finally后面的语句!
请注意,题主的代码中
class FinallyTest {
public void test(int a) {
try {
int i = 0 / a;
//1.异常捕获
} catch (Exception ex) {
System.err.println("程序异常了!");
} finally {
System.out.println("执行finally!");
}
//line2
System.out.println("执行finally后面的语句!");
}
}
main方法向test方法中传递了a=0
由于除数为0,则抛出算数异常
由于题主代码中捕获了异常,则进入到catch块中,则打印第一行结果
执行完catch块后则进入到finally中则执行finally语句,则打印底二行结果
由于异常被catch块捕获了之后,则表示程序还是可以正常的执行的,则执行line2的代码,打印第句话
main函数向test方法中传递a=1
由于除数不为0,则正常执行。输出后面的结果。
总结:finally后面的语句这个分几种情况
异常被捕获:finally代码正常执行并且finally后面正常的代码还是可以继续执行
异常未被捕获:finally代码正常执行,并将异常向上一层调用方抛出,但是finally后面正常的代码不再执行