首页 > 代码库 > try catch finally 块里都有return
try catch finally 块里都有return
在try的括号里面有return一个值,那在哪里执行finally里的代码?
A:不执行finally代码
B:return前执行
C:return后执行
答案:B
程序在走到try和catch的return之前会去检查finally,将return 后面的结果保存到本地变量表中,然后“先执行finally,再执行try或catch的return”.
下面一个例子:
如果在try里面返回的是一个保存了值的变量,即:return a;,finally块里面修改了a 的值,那么请看上面的红字部分。
public class Test{ public static int a(){ int a = 0; try{ a = 1; return a; } catch (Exception e) { a = 2; return a; } finally{ a = 3; } } public static void main(String[] args){ System.out.println(a()); } }
最终结果输出 1。
如果在执行finally块里面遇见return ,则优先执行finally里面的return。
例子:
public class Test{ public static int a(){ int a = 0; try{ a = 1; return a; } catch (Exception e) { a = 2; return a; } finally{ a = 3; return a; } } public static void main(String[] args){ System.out.println(a()); } }
输出结果为3
try catch finally 块里都有return
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。