try finally執行先後?

2021-06-27 09:58:37 字數 1311 閱讀 4671

有這樣的一段**:

public static void main(string args) 

private static int test()

finally

}

輸出結果:]

x=2

t=1

從結果來看,肯定是執行了,也不可能先於try執行,大多數人覺得是後於try執行,也有說是return執行中的時候執行。。。。。但是看下面的例子。

查了一些資料:

public static void  main(string args)

public int get()

finally

}

結果:輸出2.。。。。。。。。。

和上面對照看起來,就感覺很奇怪了

再看乙個:*/

public

static

voidmain(string args) {

//todoauto-generated method stub

system.out

.println(newtest().test());;

inttest()

try

returnfunc1();

finally

returnfunc2();

intfunc1()

system.out

.println("func1");

return1;

intfunc2()

system.out

.println("func2");

return2;

-----------執行結果-----------------

func1

func2

結論:(僅供參考)try中的return語句呼叫的函式先於finally中呼叫的函式執行,也就是說return語句先執行,finally語句後執行,所以,返回的結果是2。return並不是讓函式馬上返回,而是return語句執行後,將把返回結果放置進函式棧中,此時函式並不是馬上返回,它要執行finally語句後才真正開始返回。

try finally 執行順序

class exc public class except catch nullpointerexception e1 catch arithmeticexception e1 catch exception e3 finally system.out.println res return res ...

try finally的執行順序

我們都知道,無論怎麼樣finally中 都會被執行,一直我都以為finally的執行順序就以下兩種 現在還有第三種情況,當finally遇上多執行緒時。public class threadutil catch interruptedexception e start finally 當執行fun ...

filter執行先後問題 Filter執行順序

asp.net mvc framework支援四種不同型別的filter authorization filters 實現iauthorizationfilter介面的屬性.action filters 實現iactionfilter介面的屬性.result filters 實現iresultfil...