try-catch-finally执行顺序及多return语句效果
来源:互联网 发布:mac apktool使用教程 编辑:程序博客网 时间:2024/06/06 17:26
文本内容
1 执行过程
2 return语句
1 执行过程
2 return语句
规则:根据执行过程,最后一个执行的return语句生效,其返回值在执行相应return语句时就被确定,后续修改无效。
public static int testFinally() {int a = 1;try {a = 2;return a;} catch (Exception ioe) {a = 3;return a;} finally {a = 4;return a;}}// 返回值:4
public static int testFinally() {int a = 1;try {a = 2;return a;} catch (Exception ioe) {a = 3;return a;} finally {a = 4;}}// 返回值:2
原因分析:
在try块中执行到return a,由于存在finally块,因此,返回动作暂停,并将此时应返回的值(2)压入栈;
执行finally块代码,将变量a赋值为4;
执行完finally块,恢复返回动作,从栈中弹出要返回的数据(2)并返回。
public static int testFinally() {int a = 1;try {a = 2;a = 1/0; // 除数为零异常return a;} catch (Exception ioe) {a = 3;return a;} finally {a = 4;}}// 返回值:3
原因分析:
同上一例子相同,最后一次执行到的return语句发生在catch块,当时的返回值为3。
特殊情况:
若返回的内容是引用类型(地址),则在执行最后一次return语句的时候,仅仅是确定了返回的引用值(地址)。
因此,若在finally块中,修改该引用指向的对象,修改的内容是可以生效的。
若理解基本数据和引用在内存中存储形式的相关知识,就不难理解其中的原因,其最终返回值依然是遵循之前说的规则:
最后一个执行的return语句生效,其返回值在执行相应return语句时就被确定(只是,这里确定的是引用)。
阅读全文
0 0
- try-catch-finally执行顺序及多return语句效果
- 含有return语句的try-catch-finally语句执行顺序
- return语句在try-catch-finally中的执行顺序
- return语句在try-catch-finally中的执行顺序
- try...catch...finally中的执行顺序和return语句 总结
- 关于try-catch-finally-return语句的执行顺序
- 浅析Java try....catch....finally中return语句执行顺序
- try-catch语句中return和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 的执行顺序
- populating-next-right-pointers-in-each-node(i,ii)
- ubuntu 16.04 LTS
- init.rc启动 shell脚本
- React.js入门与案例开发
- android makefile批处理文件夹的资源
- try-catch-finally执行顺序及多return语句效果
- 2014-03-28-vs2008破解
- 关于谷歌控制台存在的一个问题
- Java Markdown
- Educational Codeforces Round 33 893D
- socket 1
- Ruby快速学(1)-类
- C#接口
- 从RGB色转为灰度色算法