如何正确处理构造函数中的异常?

Joh*_*_sa 6 c++ constructor exception-handling

可能重复:
如果在c ++中从构造函数抛出异常,如何清理初始化资源

如果我创建6个对象并且这些对象创建5个对象并且在创建第6个对象时失败,我如何处理构造函数中的异常?

谢谢.

Die*_*ühl 1

当构造函数中抛出异常时,所有完全构造的子对象都会被销毁。由于让构造对象的析构函数管理其资源是一种很好的做法,因此无需对这些子对象执行任何操作。剩下的就是在抛出异常时清理当前正在执行的构造函数的主体。然而,这与任何其他函数中的清理没有什么不同。

请注意,销毁顺序与构造顺序相反。也就是说,当所有子对象尚未被销毁时,首先开始体内的清理。然后成员被销毁,然后是非虚拟基类,最后是虚拟基类。