假设我有一个类充当“智能指针”并在销毁时释放某种系统资源。
class Resource{
protected:
ResourceHandle h;
public:
Resource(ResourceHandle handle)
:h(handle){
}
~Resource(){
if (h)
releaseResourceHandle(h);//external function, probably from OS
}
};
我有一些函数返回用于“资源”初始化的值:
ResourceHandle allocateHandle();
现在,如果我在我的代码中这样做:
Resource resource(allocateHandle());
AND allocateHandle() 抛出异常,究竟会发生什么?崩溃会发生在构建 Resource() 期间还是构建之前?
常识告诉我,因为在 allocateHandle 返回之前抛出异常,执行甚至不会进入 Resource() 构造函数,但我对此不是很确定。这是一个正确的假设吗?
最佳答案
参数在任何函数调用之前被求值——在本例中是构造函数——。 因此,在构造函数调用之前抛出异常
关于c++ - 构造函数返回值中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3329628/