try {}里有一个return语句 finally执行顺序
2016-04-08 21:51
260 查看
先看例子
输出结果是1
输出2
那么finally究竟是在try {}中的return之前还是之后执行的呢?
try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
以下代码可见运行过程
fun1()
fun2()
2
package example; class Demo{ public static void main(String args[]) { int x=1; System.out.println(Test(x)); } private static int Test(int x) { try{ return x; } finally{ x++; } } }
输出结果是1
package example; class Demo{ public static void main(String args[]) { int x=1; System.out.println(Test(x)); } private static int Test(int x) { try{ return x; } finally{ x++; return x; } } }
输出2
那么finally究竟是在try {}中的return之前还是之后执行的呢?
try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
以下代码可见运行过程
public static void main(String args[]) { int x=1; System.out.println(Test(x)); } private static int Test(int x) { try{ return fun1(); } finally{ return fun2(); } } private static int fun1() { System.out.println("fun1()"); return 1; } private static int fun2() { System.out.println("fun2()"); return 2; } }
fun1()
fun2()
2
相关文章推荐
- hdu1561(树形dp+01背包) The more, The Better
- 获取应用版本名称和版本号的方法
- 如何更高效地使用 OkHttp
- Android笔记---RGB颜色查询对照表
- oracle patch打不上的常见问题
- LeetCode Climbing Stairs
- MySQL多实例安装
- 大叔 EF 来分析 EntityFrameworks.Data.Core 1
- 浅析Java中static修饰符
- Java 序列化 反序列化 历史版本处理
- 使用 Visual Studio 2015 对 C++ 代码运行单元测试
- bzoj 3196: Tyvj 1730 二逼平衡树
- 高通开发Qual F&Q
- 225. Implement Stack using Queues
- POJ 2546 Circular Area [相交园面积]【计算几何】
- 汇众教育、暴风影音虚拟现实(VR)来袭
- Linux中加密和解密技术及CA认证
- 滑雪(动态规划)
- 滑雪(动态规划)
- 书稿复制(动态规划)