您的位置:首页 > 编程语言 > Java开发

java中 try catch finally return执行的顺序

2018-08-30 10:40 417 查看
小疯之前遇到一个问题,就是关于return和finally的执行顺序问题,其实关于这个问题小疯许久之前在一篇博客中看到了解答,不过由于时间间隔找不到了,所以小疯今天在这里记录一下:

执行顺序是:先try 若有异常就catch,然后finally,之后执行catch中的return,如果finally中也有return,那么久直接出去不执行catch中的return。

1、finally中也有return语句如下:

public class TryTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(TryTest.test());

}
public static String test() {
try {
System.out.println("try");
throw new Exception();
} catch(Exception e) {
System.out.println("catch");
return "return";
} finally {
System.out.println("finally");
return "return in finally";
}
}

}

执行结果如下:

try

catch

finally

return in finally

可见顺序是先执行try中的输出语句然后在异常处调到catch语块,然后执行到catch中的return处没有执行return而是跳转到finally中执行。

2、finally中没有return语句:

public class TryTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(TryTest.test());

}
public static String test() {
try {
System.out.println("try");
throw new Exception();
} catch(Exception e) {
System.out.println("catch");
return "return";
} finally {
System.out.println("finally");
//return "return in finally";
}
}

}

执行结果如下:

try

catch

finally

return

可见执行顺序是先执行try中的输出语句然后在异常处调到catch语块,然后执行过catch的输出语句跳转到finally中执行之后返回到catch中的return语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java