java try catch finally 执行顺序
来源:互联网 发布:seo关键词优化 编辑:程序博客网 时间:2024/05/22 04:24
问题:
1.finally中的语句是否一定会被执行?
答案是否定的,有以下两种情况。 1.在进入try语句之间就已经发生异常 2.在try中强制退出,System.exit(0)(终止java虚拟机)
2.finally中的return语句究竟是在try中的return语句之前还是之后执行?
答案是finally语句是在return语句执行之后,return返回之前执行的。
3.如果try和finally中都有return语句,最终返回哪一个?
答案是finally中的return。
举例:
情况1:
try{} catch(){}finally{} return; 按顺序执行。
情况2:
try{ return; }catch(){} finally{} return; 1.程序执行try块中return之前(包括return语句中的表达式运算)代码; 2.执行finally块,最后执行try中return; 注:finally块之后的语句return,因为程序在try中已经return所以不再执行。
情况3:
try{ } catch(){return;} finally{} return; 1.程序先执行try,如果遇到异常执行catch块, 2.有异常:则执行catch中return之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码,最后执行catch块中return. finally之后的代码不再执行。 3.无异常:执行完try再finally再return.
情况4:
try{ return; }catch(){} finally{return;} 1.程序执行try块中return之前(包括return语句中的表达式运算)代码; 2.再执行finally块,因为finally块中有return所以提前退出。
情况5:
try{} catch(){return;}finally{return;} 1.程序执行catch块中return之前(包括return语句中的表达式运算)代码; 2.再执行finally块,因为finally块中有return所以提前退出。
情况6:
try{ return;}catch(){return;} finally{return;} 1.程序执行try块中return之前(包括return语句中的表达式运算)代码; 2.有异常:执行catch块中return之前(包括return语句中的表达式运算)代码; 则再执行finally块,因为finally块中有return所以提前退出。 3.无异常:则再执行finally块,因为finally块中有return所以提前退出。
最终结论:
任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。 如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的, 编译器把finally中的return实现为一个warning。
1 0
- Java try catch finally的执行顺序
- Java try catch finally的执行顺序
- Java try catch finally的执行顺序
- Java try catch finally的执行顺序
- Java try catch finally的执行顺序
- Java try-catch-finally 代码执行顺序
- java try catch finally 执行顺序
- java 中try catch finally执行顺序
- java try-catch-finally的执行顺序
- try catch finally执行顺序
- try catch finally执行顺序
- try catch finally执行顺序
- try catch finally执行顺序
- try-catch-finally执行顺序
- try catch finally执行顺序
- try-catch-finally执行顺序
- try catch finally执行顺序
- java try、catch、finally及finally执行顺序详解
- ④正则表达式基础知识
- c++ MFC 关于三角划分的问题
- 使用Hortonworks的Hadoop发行版(hdp)在Windows系统上安装Hadoop集群
- 字符串函数自定义
- emacs配置color-theme
- java try catch finally 执行顺序
- Dalvik中自定义类加载
- FORTAN中一个表达式多行
- 如何水平居中元素
- (java使用myeclipse)调用webservice接口进行操作
- Http协议
- crontab 精确到执行分钟内某一秒执行的方法
- MySql之存储引擎
- 进程保活之——这绝对不是扯淡