java中finally和return的執行順序

2021-09-09 01:13:23 字數 2013 閱讀 7675

注意:return的位置。。。

從這幾個例子中可以看到,如果try之前沒有有條件的return,則try..catch

..finally語句塊中的語句都是順序執行(如果try中或者catch中

有return語句,那麼先執行該return,然後執行finally, 如果finally中也有return, 該出的返回值會覆蓋掉try 和 catch中的return值;

如果try..

catch

..finally語句塊之後有return語句, try中、catch中、finally中都沒有 (有條件的return 語句)先按順序執行到finally,

最後return, 如果在try中或者catch中有 (有條件的return)那麼先執行該return, 然後執行finally),否則即在進入try語句塊之前返回就不會執行try語句

//finaly 先執行, return 後執行

public

class

test

public

static

inttt()

catch

(exception e)

finally

system.out.println("finally");

}return b+=88;

}}//

先執行第乙個return, 然後執行finally

public

class

test

public

static

inttt()

catch

(exception e)

finally

system.out.println("finally");

return b+88;}}}

//在try中增加乙個有條件的異常丟擲,然後其中的return語句被忽略

public

class

test

public

static

inttt()

catch

(exception e)

finally

system.out.println("finally");

}return b+=88;

}}//finally中的返回值將覆蓋try中的return返回值

public

class

test

public

static

inttt()

catch

(exception e)

finally

system.out.println("finally");

return b+=88;

}

}}//

cathch中的return 也會被finally中的return覆蓋

public

class

test

public

static

inttt()

catch

(exception e)

finally

system.out.println("finally");

return b+=88;

}

}}//

直接返回,下面不再執行try..catch...finally語句塊

public

class

test

public

static

inttt()

catch

(exception e)

finally

system.out.println("finally");

return b+=88;

}

}}

Java中finally與return的執行順序

finally不會執行的兩種情況 1.finally對應的try塊語句還沒被執行到就返回了2.finally對應的try塊語句中有system.exit 這樣的語句 finally塊的語句在try或catch中的return語句 執行之後返回之前執行 若finally裡也有return語句,則 覆蓋...

Java異常捕獲機制中的finally

package day08 finally塊 finally塊定義在異常捕獲機制的最後 可以直接跟在try塊之後或最後乙個catch塊之後。finally塊中的 一定會執行,無論try塊中的 是否丟擲異常。所以通常會把釋放資源等操作放在finally中,例如關閉流等。author kaixu pub...

java中finally一定會執行嗎?

面試的時候,經常會被問到finally的用法,是否一定會執行,有return的情況會怎麼樣?大多數應該都認為finally 是一定會被執行的,其實不然。看下面的 public int getnum try catch exception e finally return num 通過測試發現,如果程...