public int test1(){
int i=4;
try{
return i;
}finally{
i=0;
System.out.println("---test----");
}
}// 返回4
public int test2(){
int i=4;
try{
return i;
}finally{
i=0;
System.out.println("---test----");
return i;
}
}//返回0注意两个方法的返回值.按jbahamut的说法
return 压栈,执行finally,方法返回finally总是被执行的,如此在finally中的某些操作是非常危险的.如Fingki.li所说.
第一个test中return压栈后,栈中的值没有变,所以返回4
finally块里尽量避免使用return,会吃掉exception.今天真是上了一课,以前还自以为在finally中使用return很不错,原来犯了这么大的忌讳.
转载声明: 出自: Ghoul To World!作者: GreatGhoul

No comments:
Post a Comment
Note: Only a member of this blog may post a comment.