try catch finally 與返回值的修改

2022-08-24 06:39:11 字數 1133 閱讀 8849

1

public

static

intfunc() catch

(exception e) finally

12 }

正確的返回結果是,func返回1。

分析可總結為:

如果finally中沒有return語句,但是改變了要返回的值,這裡有點類似與引用傳遞和值傳遞的區別,分以下兩種情況,:

1)如果return的資料是基本資料型別或文字字串**,則在finally中對該基本資料的改變不起作用,try中的return語句依然會返回進入finally塊之前保留的值。

2)如果return的資料是引用資料型別,而在finally中對該引用資料型別的屬性值的改變起作用,try中的return語句返回的就是在finally中改變後的該屬性的值。

return 是string型別的code:

1

public

static

string funcstr() catch

(exception e) finally

12 }

該函式返回值為字串」1」。

return 是引用資料型別(物件):

1

public

static

person funcperson() catch

(exception e) finally12}

1314

static

class

person

19}

該函式的返回型別是resultperson,age為50,即在finally中更改了有效。

總結:

如果沒有異常出現,而且finally語句中沒有return,則會執行try裡邊的return,並且,會將變數暫存起來(物件存的是引用的位址),再去執行finally中的語句,這時候,如果返回值是基本資料型別或者字串,則finally相當於更改副本,不會對暫存值有影響;但是,如果返回值是物件,則finally中的語句,仍會根據位址的副本,改變原物件的值。所以上邊的例子,返回值的age為50。

try catch finally執行順序

public class test public static int ma catch exception e finally 說明 不出現異常情況 執行順序 try finally 出現異常情況 執行順序 try catch finally try中有返回語句,沒有異常 執行順序 try ret...

try catch finally執行順序

結論 1 不管有木有出現異常,finally塊中 都會執行 2 當try和catch中有return時,finally任會執行 3 finally是在return表示式運算後前執行的,所以函式返回值是在finally執行前確定的 4 finally中最好不要包含return,否則程式會提前退出,返回...

try catch finally使用體會

try catch finally public class finallytest static int test finally 結果是2。在try語句中,在執行return語句時,要返回的結果已經準備好了,就在此時,程式轉到finally執行了。在轉去之前,try中先把要返回的結果存放到不同於...