首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

_try_finally在何地返回

2013-01-06 
__try__finally在何处返回int test(bool input){__try{dosomething...if (!input){return 1}return 2}__

__try__finally在何处返回
int test(bool input)
{
  __try
  {
    dosomething...
    if (!input)
    {
      return 1;
    }
    return 2;
  }
  __finally
  {
    return 3;
  }
  return 4;
}
main()
{
  int mytest = test(false);//此时mytest结果为1还是3还是4?
  int mytest = test(true);//此时mytest结果为2还是3还是4?
}
[解决办法]
程序执行try块中return之前(包括return语句中的表达式运算)代码;再执行finally块;因为finally块中有return,所以提前退出。
应该都是3吧!
[解决办法]
不管在何种情况下,在离开当前的作用域时,finally块区域内的代码都将会被执行到。打几个断点调试下就知道了,windows核心编程上专门有讲SEH的看看就知道了

热点排行