【JAVA】 try catch finally 中包含return的几种情况,及返回结果

第一种情况:在try和catch中有return,finally中没有return,且finally中没有对try或catch中要 return。这种情况,无论如何finally中的代码块都会执行,然后再执行try或者finally中的return。

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

返回的数据为基本数据类型,则finally中对要返回数据操作无影响。try或者catch要返回的值存到了其他局部变量中,所以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就失效了, 上级方法调用者是捕获不到异常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章