【发布时间】:2018-05-10 04:34:07
【问题描述】:
我有一个可能会抛出异常的构造函数,据我了解,一旦发生这种情况,就会调用解构函数。问题是我不知道如何检查对象是否实际构造成功。
我试过了
if (objectName) {
//keep working
} else {
//alert that something went wrong
}
但我了解到,在 C++ 中不能像在 Java 中那样拥有“空”对象,因为指针始终存在,但可能指向你不想要的东西。
然后我还尝试围绕对象实例化进行额外的尝试捕获,但执行只是继续正常进行。检查对象是否已成功构建并准备好使用的最佳做法是什么?
【问题讨论】:
-
如果不抛出异常,则对象完全构造。
-
如果你的构造函数抛出,你总是可以捕捉到异常。发布一些真实的代码来说明你在做什么。
-
除非万不得已,否则最好不要扔。另外,请阅读:stroustrup.com/bs_faq2.html#ctor-exceptions
-
阅读并回复我们:stackoverflow.com/help/mcve
标签: c++ exception constructor