finally是在try块中的return之前还是之后执行

我知道的是,如果try块中如果有return的话,会把return后的变量值放到操作数栈的栈顶,给ireturn指令使用,但是没有返回,再继续执行finally里面的方法。那这样算是在return之前执行还是return之后执行呢?
全部评论
计算return表达式--->保存return表达式结果--->执行finally块--->返回return表达式结果。 所以,如果finally中有return,那么第四部分就不会执行了
点赞 回复 分享
发布于 2016-09-13 10:32
实际就是一个栈, 因为有finally块的存在,所以即使在try块中遇到return也会将其压入栈中,   此时在执行finally中的东西, 此时算是return之前执行;  当然如果finally中有 return的话 按照栈的习惯,后进先出 是先执行finllay的return,而且return之后 这个操作的生命周期就完事了。栈也消亡了 所以表面上看是 覆盖了原return
点赞 回复 分享
发布于 2016-09-13 10:22
return后面语句之后,return之前
点赞 回复 分享
发布于 2016-09-12 21:30
http://www.jianshu.com/p/ff574ca84ec7 推荐看看
点赞 回复 分享
发布于 2016-09-13 10:02
这种题就是个坑,出题的知道自己想考什么,但是表达有歧义
点赞 回复 分享
发布于 2016-09-13 03:19
return执行以后,返回以前
点赞 回复 分享
发布于 2016-09-12 23:26
之后,而且一般来说是直接finally中的return覆盖之前的return
点赞 回复 分享
发布于 2016-09-12 21:29

相关推荐

难度个人感觉算我多个大厂面试里比较顶的了,多个场景,多个底层,一直追问。答了也不知道对没?而且面试官还喜欢设陷阱 引诱我犯错 。问题: 先来个自我介绍你实习是go语言吧, 那你先讲讲java和go的区别(10次9次都有人问)Java的基本数据内型(先跟我闹着玩儿)4类8种== 和 .equals() 的区别(继续闹着玩儿)== 使用场景:== 用于比较对象引用(内存地址)。equals 用于比较对象内容,但其行为依赖于该类是否重写了equals方法java集合 hashmap和hashtable区别?因为hashmap不是线程安全,所以如果用hashmap可能用哪些问题?java有异常情况一般怎么处理?代码写的不好可能会出现OOM异常,用trycatch 能捕获吗?哪些情况下会OOM建立连接管道会不会导致OOMJVM的垃圾回收算法java多态?go的多态如何实现设计模式单例模式例子和到底解决什么问题懒汉式加锁检查两次一定能检查到存不存在吗?volatile能保证就能保证线程安全吗?为什么?创建单例的时候如果指令重排怎么解决Dfs&BFS判断字符串 是不是回文的?字符串长度空间是10g,只有计算机内存只有100m,如何实现这个100g的字符串是不是回文?逐块读取思路?具体大小可能不确定,怎么划分区块,会不会导致双指针往中间靠拢的时候一部分是2m,一个是1m?怎么解决?数据库mysql和mongoDB区别?Mysql 索引的实现原理?建立索引abc三个字段,我想查询我只知道bc,能命中索引吗?(最左匹配原则)项目拷打(多线程,redis)
查看28道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务