这是一道面试题,首先finally{}里面的code肯定是会执行的,至于在return前还是后,

看答案说的是在return后执行,我觉得不对,百度了一下,有说return前的,有说return后的,还有return中间执行的。遂做了一个小测试如下:

        static void Main(string[] args){//测试Test();System.Console.WriteLine("结束了");System.Console.ReadLine();}/// <summary>/// 测试/// </summary>/// <returns></returns>private static int Test(){try{System.Console.WriteLine("好,开始了");return ReturnInt();}catch (Exception exception){System.Console.WriteLine("我是异常");throw;}finally{System.Console.WriteLine("我是finally");}}/// <summary>/// 返回数字/// </summary>/// <returns></returns>private static int ReturnInt(){System.Console.WriteLine("我是return");return 1;}

  测试结果如下:

  

  所以我觉得finally{}里面的code是在return之后执行的。

  此测试较粗糙,如有其它方法证明,望告知。

----------------------------------------------------------------------------------------------华丽的分割线-----------------------------------------------------------------------------------------------------------------------------------------------

  之前的测试果然很粗糙,搞错了一个概念,return到底是在什么时候才算执行,什么时候执行完。上面打印“我是return”的时候,我以为是return执行完了,其实那个时候只是去准备return的返回值去了,并没有真正的返回“1”并跳出Test()方法,准备好返回值之后,接着去执行finally{}里面的code,打印了“我是finally”,最后Test()方法才算执行完,并真正的返回(return)“1”到main里面。

按照@以后会觉得昵称很幼稚 老哥的提醒,修改了一下main()里面的代码,

        static void Main(string[] args){//测试Console.WriteLine("Test结果:" + Test());System.Console.WriteLine("结束了");System.Console.ReadLine();}

  结果如下:

  

  所以finally{}里面的code应该是在return之前执行的。

  在http://bbs.csdn.net/topics/60474475 此贴中,五楼的老哥的话,“函数应该是栈调用,如果先执行return ,哪不是退到上个栈了,怎么调用finally, 所以我觉得先调用finally”,

  在http://blog.csdn.net/gaoyuanfeng/article/details/4064388 文章中,finally与return的关系也讲得很明白了,这一天天的真是受教了。

转载于:https://www.cnblogs.com/bookobe/p/8491041.html

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

  1. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的...

    这是一个很经典的面试题:try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,是在return前还是后?话不多说,直接看代码: 运行结果为: 通过代码,可 ...

  2. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,是在return前还是后

    一般答案:会执行,在方法返回调用前执行.准确的说是在return中间执行. 下面举个例子: public class Test {public static void main(String[] ar ...

  3. return语句的用法

    1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序) 2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句. 但是区别在于 ...

  4. finally块的return语句会覆盖其他语句的return

    执行下列代码的输出结果是( ) public class Demo{public static void main(String args[]){int num = 10;System.out.pri ...

  5. 常见问题:try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候执行?

    Java的异常机制主要依赖于try.catch.finally.throws.throw五个关键字.其中 try{可能引发异常的代码:} catch{处理这种异常的代码:} finally{回收在tr ...

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

    Try{}里有一个return语句,那么紧跟在这个try后面的finally{}里的code会执行的. finally 语句总会执行,除非遇到一些特殊情况,如System.exit(0) return ...

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

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

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

    在return中间执行,代码示例 package com.mybatis.employee.test;public class Main {static int test(){int x = 1;Sy ...

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

    也许你的答案事在return之前,但往更细的说,我的答案事在return中间执行,请看下面程序代码的运行结果: 运行结果是1为什么呢?主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函 ...

最新文章

  1. 计算机辅助教学导学设计研究,《计算机辅助教学》实验报告
  2. ubuntu下创建图标
  3. .NET 开源项目 StreamJsonRpc 介绍[上篇]
  4. Vue.js2.0开发环境搭建(二)
  5. 面向对象三大特性总结
  6. Yii2实现自定义独立验证器的方法
  7. WPS文字2013利用绘图工具中的形状裁剪出各式各样的图片
  8. cornerstone 加载dicom图像不同分辨率导致图像被截取的问题。
  9. 使用linux的MTD tests support测试flash性能
  10. 数据治理之——数据标准体系建设示例
  11. python如何调用函数三次_python中如何调用函数
  12. LoRa技术-什么是LoRa
  13. 解决beyond compare秘钥被吊销的问题
  14. 如何配置luogu,codeforces的spj(special judge)
  15. android设备怎么支持8021x,android WiFi ASSOC_REJECT 流程跟踪
  16. 数值分析——自适应辛普森积分
  17. 打造老年人的健康监测产品很有市场(随记)
  18. Week of 2.21
  19. 红米3用电信卡显示无服务器,红米3支持电信卡吗?红米3支持联通卡吗?
  20. 2017-2018-1(实变函数56, 点集拓扑56)

热门文章

  1. 2种IO并发开发中的设计模式:Reactor and Proactor
  2. 护理方面关于人工智能的构想_如何提出惊人的AI,ML或数据科学项目构想。
  3. 聚类树状图_聚集聚类和树状图-解释
  4. 动态时间规整-DTW算法
  5. 成吉思汗的子孙:中国游牧蒙古人
  6. 不同时期的同学的聚会
  7. 未命名语句块中的声明
  8. 映射技术之储存器映射
  9. vue 直接访问静态图片_vue中本地静态图片路径写法
  10. python波峰波谷算法_波动均分算法