当前位置:   article > 正文

try catch finally 中包含return的几种情况,及返回结果_在catch中return 和finally return 会返回哪一个

在catch中return 和finally return 会返回哪一个

第一种情况在try和catch中有return,finally中没有return,且finally中没有对try或catch中要 return数据进行操作的代码,这种情况也是最好理解的。

第二种情况在try和catch中有return,finally中没有return,但finally中有对try或catch中要 return数据进行操作的代码

要返回的数据是基本数据类型还是引用数据类型,对结果也有不同的影响

返回的数据为基本数据类型,则finally中对要返回数据操作无影响

返回的数据为引用数据类型,finally中如果改变了返回对象的属性则影响结果,如果改变的是对象的引用则和基本数据类型一样不改变结果

第三种情况在try和catch中有return,finally中也有return

try或catch中return后面的代码会执行,但最终返回的结果为finally中return的值,需要注意的是try或catch中return后面的代码会执行,只是存起来了,并没有返回,让finally捷足先登先返回了。

第四种情况在try中有return,在catch中新抛出异常,finally中有return

如果catch块中捕获了异常, 并且在catch块中将该异常throw给上级调用者进行处理, 但finally中有return, 那么catch块中的throw就失效了, 上级方法调用者是捕获不到异常。

第五种情况:只有try,没有catch,有finally。同4,如果finally里有return,会返回值;如果没有会向上抛出异常。

总结:finally里的代码一定会执行,如果try 或者 catch里有return,return是表达式的,表达式会执行,但是如果finally也有return,以finally里为准,catch里向上抛出的异常也要“让步”。

参考:https://www.cnblogs.com/sunshineweb/p/7656463.html

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/294498
推荐阅读
相关标签
  

闽ICP备14008679号