Java中try-catch-finally中的return

来源:互联网 发布:如何写好故事 知乎 编辑:程序博客网 时间:2024/05/16 17:41

try-catch-finally的执行过程

即使try-catch中有return语句,finally中的代码也会执行。

如果try-catch和finally中有都return语句,则函数的返回值是finally中return的值。

如果try-catch中有return语句,finally中没有return语句,则函数的返回值是try-catch中的return的值。此时,有一个疑问,如果在finally中对try-catch中return的变量进行操作是否会影响try-catch中return的值?

这里写图片描述

返回的是0,并没有影响,答案在这篇文章中,下面是其中的一段解释

在try语句的return块中,return 返回的引用变量(t 是引用类型)并不是try语句外定义的引用变量t,而是系统重新定义了一个局部引用t’,这个引用指向了引用t对应的值,也就是try ,即使在finally语句中把引用t指向了值finally,因为return的返回引用已经不是t ,所以引用t的对应的值和try语句中的返回值无关了。

finally中使用return语句为什么会出警告

这里写图片描述

不建议在finally中使用return语句的原因如下:

  1. 如果finally中有return语句,则会忽略try-catch中的return语句,这会导致很难判断方法的返回结果,容易得出错误的结论;

  2. 如果finally中有return语句,即使前面的try-catch抛出了异常,程序也会忽略try-catch抛出的异常,而是直接返回finally中的返回值。

0 0