try catch finally return之间的关系
2015-11-12 14:09
274 查看
一、try catch finally return之间的关系:
正在写dsoFramer的时候,同事突然说面试的时候问的一个问题,catch和return那个先执行,我瞬间迷茫了,然后整理了整理,稍微找了点资料,才明白这之间的联系。嘿嘿,献丑了。
1、当这四个关键字全部存在的时候,finally是永远执行的
ex:1、在try中没有异常的情况下try、catch、finally的执行顺序 try -- finally(catch不执行)
2、如果try中有异常,执行顺序是try -- catch -- finally
3、try中没有异常并且try中有return这时候正常执行顺序是try -- finally -- return(catch不执行)
4、try中有异常并且try中有return这时候正常执行顺序是try--catch--finally-- return
2、return是不会执行的
try-catch-finally里都没有return ,finally 之后有个return ,如果try中有异常,finally执行完后,不再执行return,try中有异常以后,根据异常机制先执行catch后执 行finally,此时错误异常已经抛出,程序因异常而终止,所以return任然不执行。
3、finally中的return会覆盖掉其它位置的return
在存在try-catch-finally的方法中,return可能出现的位置有4个,在try中,在catch中,在finally中,在finally后(try-catch-finally外的语句块)。在这4个位置都出现 return的情况下(应该是不可能的,如果前面3个位置都存在return,那么最后一个位置的return就成了unreachable code,编译不会通过),最终会执行的return应该是 finally中的return。
正在写dsoFramer的时候,同事突然说面试的时候问的一个问题,catch和return那个先执行,我瞬间迷茫了,然后整理了整理,稍微找了点资料,才明白这之间的联系。嘿嘿,献丑了。
1、当这四个关键字全部存在的时候,finally是永远执行的
ex:1、在try中没有异常的情况下try、catch、finally的执行顺序 try -- finally(catch不执行)
2、如果try中有异常,执行顺序是try -- catch -- finally
3、try中没有异常并且try中有return这时候正常执行顺序是try -- finally -- return(catch不执行)
4、try中有异常并且try中有return这时候正常执行顺序是try--catch--finally-- return
2、return是不会执行的
try-catch-finally里都没有return ,finally 之后有个return ,如果try中有异常,finally执行完后,不再执行return,try中有异常以后,根据异常机制先执行catch后执 行finally,此时错误异常已经抛出,程序因异常而终止,所以return任然不执行。
3、finally中的return会覆盖掉其它位置的return
在存在try-catch-finally的方法中,return可能出现的位置有4个,在try中,在catch中,在finally中,在finally后(try-catch-finally外的语句块)。在这4个位置都出现 return的情况下(应该是不可能的,如果前面3个位置都存在return,那么最后一个位置的return就成了unreachable code,编译不会通过),最终会执行的return应该是 finally中的return。
相关文章推荐
- Android升级ADT22后会报ClassNotFoundException的原因分析
- 安装Tomcat
- Linux 系统挂载数据盘
- 更新数据表中的字段
- 安装配置无线 SONOS HIFI 系统 (完整版)
- Django中间件
- 第一章C++对C的扩展(Externsion)--(5)默认参数
- oc 之文件操作
- UIScrollView配合定时器自动循环滚动
- requestWindowFeature使用详解
- layer.js漂亮的弹出框
- chart.js参数问题
- cacti使用配置
- Python 访问需要登录验证的接口
- chart.js参数问题
- 正则表达式-基础普及篇
- Makefile条件编译
- Lucene工具箱之OpenBitSet
- iOS 国际化 支持app多种语言
- 表中有A列和B列,对A列数据去重复,对B列数据排序