int foo(){
int i =10;
try{
i = --i /0;
return i--;
}catch (Exception e){
i = i-- /0;
return --i;
}finally {
--i;
return i--;
}
}
这里的foo返回的值是7,而i的值是6.
理由:
第四行代码先执行–i,i此时为9,然后执行除以0的操作,触发异常,进入第七行
第七行代码先执行i/0,之后再自减,此时i为8,因为异常,所以不执行第八行代码,直接进入第十行
第十行代码i自减,所以此时i为7,继续第十一行
第十一行代码先返回i,再进行自减,所以foo函数返回值是7,而i的值是6.