篆体字网 > 知识库

trycatchfinally

来源:篆体字网 2023-12-28 21:13:07 作者:篆字君

这篇文章主要讨论的是try、catch、finally模块的执行顺序。先看下面一个例子:

public static String doTrySeq(){
try {
System.out.println("try"); //1
int i=12/0; //2

//System.out.println("It's the next step after throwed exception"); //8
return "try"; //3
}catch(Exception e){
System.out.println("catch"); //4
return "catch"; //5
}
finally {
System.out.println("finally"); //6
return "finally"; //7
}

//return "out"; //9
}

public static void main(String[] args) {
System.out.println("where return? " + doTrySeq());
}

输出结果:

try
catch
finally
where return? finally

执行顺序如下:

1)先执行1、2,在2处抛出异常,跳到catch代码块(此时跳过了3)

2)执行4、5。这里很多人认为执行return,所以直接退出并返回值。但事实并不是的,在java中,try、catch,无论执行了什么代码,最后都必须进入finally代码块。(当然,你如果用System.exit(0);这个是系统强制退出,没辙,肯定会退出去,不会执行下面的finally)

3)执行6、7,执行到7时,这时finally代码已经执行完,本应该跳回try继续下一步,但因为finally代码块中有return,所以退出方法并返回了“finally”

下面将注释catch和finally中的return,即注释掉5、7,取消8、9的注释

执行结果为:

try
catch
finally
where return? out

在执行2时,抛异常,这时跳到catch代码块,再执行finally代码块,之后跳出方法,执行9

可以看出,try中如果抛异常,程序会跳出对应的try-catch-finally模块,而出现异常的代码句下面的代码将不会被执行

上一篇:homeless garden

下一篇:奥斯卡最佳摄影奖

相关阅读