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.