try中有return,finally中的code会不会执行,执行是在return前还是后?

原创 2017年01月03日 14:44:21
注:
1.当finally中没有return,但是try中有return时,执行顺序是try--finally--return,但是finally中不会修改在try中的值,在try中的值会保存到函数栈中,继续执行finally,执行完后,再从栈中取出返回;代码如下
public class FinallyTest  
{	public static void main(String[] args) {
	      System.out.println(new FinallyTest().test());;
	}
      static int test(){
		int x = 1;
	try{
		x++;
		return x;}
	finally{
		++x;
	}}}
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。
在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果,
因此,即使finally中对变量x进行了改变,但是不会影响返回结果。
它应该使用栈保存返回值。
2.当finally中和try中都有return时,执行顺序是先执行try中,将要返回的结果保存到函数栈中,在执行finally中,此时finally中会返回在该快中的值,而不会执行try中的return语句,代码如下: public  class Test {
  public static void main(String[] args) {
System.out.println(new Test().test());
}
int test(){
try{
return func1();}
finally{
return func2();}}
int func1(){
System.out.println("func1");
return 1;}
int func2(){
System.out.println("func2");
return 2;}
-----------执行结果----------------- 
func1
func2

2

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

这个关于try{},finally {}和return的问题,网上答案纷繁。然而,错误的答案一样遍地都是。 今天在http://bbs.csdn.net/topics/60474475看到了很好的答案...
  • wugy315
  • wugy315
  • 2016年10月24日 15:04
  • 311

在try中写了return,后面又写了finally,是先执行return还是先执行fianlly

在java的学习中,关于异常的处理是很重要的一环,笔者最近在学习这一方面的知识时就遇到了一个问题:就是在try语句块中写了return,但后面又写了finally语句,那么程序到底是先执行return...
  • u014697083
  • u014697083
  • 2014年04月13日 23:32
  • 1835

【Java】try中有return,finally块执行问题

对于如下的一段程序: package try_catch_finally_return; public class TCFRtest { private static void Test1(){...
  • yongh701
  • yongh701
  • 2015年11月26日 17:03
  • 2725

关于try,finally里面的return,到底谁先执行的问题

在JAVA语言的异常处理中,finally里面代码块是为了保证无论出现了什么样的情况,finally里的代码一定会被执行。但是return 的意思就是结束当前函数的调用并跳出这个函数,因此finall...
  • java19950529
  • java19950529
  • 2016年07月27日 11:49
  • 2638

Java异常try里面有return,finally代码会执行吗

try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? 肯定会执行。finally{}块的代码只有在try...
  • CWH615
  • CWH615
  • 2016年10月28日 11:00
  • 2200

Java finally语句到底是在return之前还是之后执行?---第一篇

当return遇到finally 看过网上关于Java中异常捕获机制try…catch…finally块中的finally语句是不是一定会被执行的讨论也有很多。首先明确一点,下面两种情况finally...
  • loongshawn
  • loongshawn
  • 2016年01月09日 21:43
  • 1110

面试题之final,finally和finalize的区别以及如果catch里面有return语句,请问finally里面的代码还会执行吗?

/*  * 面试题:  * 1:final,finally和finalize的区别  * final:最终的意思,可以修饰类,成员变量,成员方法  *         修饰类,类不能被继承  *   ...
  • u012110719
  • u012110719
  • 2015年05月31日 09:44
  • 1252

try-catch语句中return和finally执行顺序详解

刷java面试题偶然看到这类问题(try/finally中含有return时的执行顺序),觉得挺有意思于是小小的研究了一下,希望经过我添油加醋天马行空之后,能给你带来一定的帮助 原题 try {...
  • zhoushumin157016
  • zhoushumin157016
  • 2017年06月15日 09:29
  • 717

C#:在catch中return,会执行finally吗?

请参考下面一段简单的语句块:1:  try2:  {3:      throw new Exception("new exception");4:  }5:  catch(Exception ex)6...
  • vipxiaotian
  • vipxiaotian
  • 2007年03月08日 11:56
  • 7029

return与finally到底谁先执行?

关于return与finally的强弱关系的解释。其中返回值的一些注意事项
  • zoujian1993
  • zoujian1993
  • 2015年04月29日 10:11
  • 1035
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:try中有return,finally中的code会不会执行,执行是在return前还是后?
举报原因:
原因补充:

(最多只允许输入30个字)