在http://www.cnitblog.com/yemoo/archive/2008/06/18/45850.html文中巧用try finally;但是讓我對(duì)finally執(zhí)行過(guò)程有點(diǎn)疑惑,發(fā)現(xiàn)java的try catch功能和js是一樣的。下面列出例子:
public int test1(){
int i=4;
try{ return i;}finally{ i=0;System.out.println("---test----");}
}
執(zhí)行結(jié)果:輸出---test----,test1方法返回4;我的疑惑是為什么不返回0
在QQ群里討論的時(shí)候,有人說(shuō)finally中的語(yǔ)句在try中的return后執(zhí)行。但是如下代碼執(zhí)行否決了上面的結(jié)論。
public int test2(){
int i=4;
try{ return i;}finally{ i=0;System.out.println("---test----");return i;}
}
注意:在finally中多了個(gè)return i;
執(zhí)行結(jié)果:輸出---test----,test2方法返回0;
這個(gè)例說(shuō)明了finally中的語(yǔ)句是在try的return執(zhí)行前執(zhí)行的。那么test1方法的finally中i=0了,但是為什么test1方法還返回4呢?這是我的疑惑,那位知道解釋一下。