读书人

_try_finally在何地返回

发布时间: 2013-01-06 15:44:47 作者: rapoo

__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的看看就知道了

读书人网 >C++

热点推荐