int GetResult(int a){
int b = 0;
__try{
if ( a != 0 ){
b++;
}
return b;
}
__finally{
--b;
}
return b;
} finally之前的return会压入栈中,finally中的语句一定会执行,如果finally中有return语句则直接返回,finally之后的语句就不会执行。所以返回的是第一个return b = 1
int GetResult(int a){
int b = 0;
__try{
if ( a != 0 ){
b++;
}
return b; // 返回值先保存
}
__finally{
--b;
return b; // 覆盖前面的返回 // 输入a=1时,返回值为0
}
return b;
}