【发布时间】:2014-08-05 16:25:01
【问题描述】:
我不明白,下面的代码是对的,
class cls
{
//just to create obj
};
int main(int argc, char* argv[])
{
try
{
throw cls();//throwing obj as ref
}
catch(cls &ref)
{
}
return 0;
}
我将cls 对象作为参考抛出,它不会因为超出{ } 范围而死吗?
因为catch块不能访问try的变量。
【问题讨论】:
-
接受的答案中的相关位是“异常对象的范围超出了发生抛出的块的范围。把它想象成生活在一个特殊的异常区域中本地对象所在的正常调用堆栈。”
-
实例在任何适当的
catch()块中处理后将超出范围。 -
你不是在抛出一个引用,你是在抛出一个对象。您只是在处理程序中获得对它的引用。
标签: c++ exception-handling pass-by-reference