【Java】try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
  TEZNKK3IfmPf 14天前 20 0

try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?

package com.test;

public class Test1 {
public static void main(String[] args) {
try {
System.out.println(new Test1().testname());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public String testname() throws Exception {
String t = "";

try {
t = "try";
System.out.println("try");
return t;
} catch (Exception e) {
// result = "catch";
t = "catch";
return t;
} finally {

System.out.println("finally");
// return t = "finally";
}
}
}
打印结果如下:
try
finally
try
将finally中的注释放开,打印结果如下:
try
finally
finally

 

结论:finally中的代码肯定会执行,但是会先执行try中的代码,如果try中有return,那么return的东西会先放到函数栈中,然后再执行finally中的代码,

①、如果finally中也有return,则会直接返回并终止程序,函数栈中的return不会被完成!;

②、如果finally中没有return,则在执行完finally中的代码之后,会将函数栈中的try中的return的内容返回并终止程序;

catch同try;

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 14天前 0

暂无评论

推荐阅读
TEZNKK3IfmPf