finally和return的执行顺序
Posted 泡^泡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了finally和return的执行顺序相关的知识,希望对你有一定的参考价值。
try() ⾥⾯有⼀个return语句, 那么后⾯的finally⾥⾯的code会不会被执⾏, 什么时候执⾏, 是在return前还是return后?
如果try中有return语句, 那么finally中的代码还是会执⾏。因为return表⽰的是要整个⽅法体返回, 所以,finally中的语句会在return之前执⾏。
但是return前执行的finally块内,对数据的修改效果对于引用类型和值类型会不同:
// 测试 修改值类型
static int test1()
int ret = 0;
try
return ret; // 返回 0,finally内的修改效果不起作用
finally
ret++;
System.out.println("finally执行");
// 测试 修改引用类型
static int[] test2()
int[] ret = new int[]0;
try
return ret; // 返回 [1],finally内的修改效果起了作用
finally
ret[0]++;
System.out.println("finally执行");
以上是关于finally和return的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章
return与finally的执行顺序的影响(skycto JEEditor)