Java含有return 的try catch finally的执行顺序
来源:互联网 发布:软件安装管理器下载 编辑:程序博客网 时间:2024/05/22 06:54
1、try-catch-finally执行顺序:
一、执行try{}块;
二、如果try{}块有异常产生,执行catch{}块;
三、无论有没有异常都要执行finally{}块,这里可以看出只要finally中有return,必然返回finally{}中的return。
如:
try{
语句1;
语句2;
语句3;
}catch(){
语句4;
}
finally{
语句5;
}
当语句1抛出异常时,执行顺序:1 4 5
当语句2抛出异常时,执行顺序:1 2 4 5
当语句1、2、3都没有异常时,执行顺序:1 2 3 5
2、return的执行,
一、如果finally{}块中有return语句,只执行finally{}块中的return语句;
二、如果finally{}块中没有return语句,如果try{}有异常,则返回catch{}中的return语句,不然执行try{}中return语句。
情况1:
try{}catch(){}finally{} return;
显然程序按顺序执行。
情况2:
try{ return;}catch(){} finally{} return;
程序执行try块中return之前(包括return语句中的表达式运算)代码;再执行finally块,最后执行try中return;finally块之后的语句return,因为程序在try中已经return所以不再执行。
情况3:
try{ } catch(){return;}finally{} return;
程序先执行try,如果遇到异常执行catch块,有异常:则执行catch中return之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码,最后执行catch块中return. finally之后也就是4处的代码不再执行。无异常:执行完try再finally再return。
情况4:
try{ return;}catch(){} finally{return;}
程序执行try块中return之前(包括return语句中的表达式运算)代码;再执行finally块,因为finally块中有return所以提前退出。
情况5:
try{} catch(){return;}finally{return;}
程序执行catch块中return之前(包括return语句中的表达式运算)代码;再执行finally块,因为finally块中有return所以提前退出。
情况6:
try{ return;}catch(){return;}finally{return;}
程序执行try块中return之前(包括return语句中的表达式运算)代码;有异常:执行catch块中return之前(包括return语句中的表达式运算)代码;则再执行finally块,因为finally块中有return所以提前退出。无异常:则再执行finally块,因为finally块中有return所以提前退出。
最终结论:任何执行try或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。
本篇整理自网络,参考资料为:
http://blog.csdn.net/luyee2010/article/details/8671187
http://bbs.csdn.net/topics/320241127
http://blog.csdn.net/aaoxue/article/details/8535754
······
- Java含有return 的try catch finally的执行顺序
- 含有return 的try catch finally的执行顺序
- 含有return 的try catch finally的执行顺序
- 含有return 的try catch finally的执行顺序
- 含有return语句的try-catch-finally语句执行顺序
- try, catch, finally, return的执行顺序
- try、catch、finally、return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try catch finally return 的执行顺序
- try-catch-finally-return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- java中try catch finally与return的执行顺序
- Java中try-catch-finally-return的执行顺序
- 关于Java中try-catch-finally-return的执行顺序
- 电路设计_光敏测试数据
- Win8 IIS占用80端口
- java多线程:wait(),notify(),notifyAll()方法
- TCP/IP四层模型
- 20160910基础
- Java含有return 的try catch finally的执行顺序
- Appium中部分api的使用方法
- 使用C# .net开发微信公众号之服务器URL配置
- Android面试之操作系统
- 简单的C语言十进制转二进制
- 初探Object
- crontab
- java 堆栈的区别
- 负载均衡一致性hash算法