van*_*ula 4 c++ constructor exception return-code
我试图从构造函数返回错误代码,因为构造函数不返回错误代码,我试图在构造函数上放置一个异常.然后在catch块中我返回适当的错误代码.这是从构造函数返回错误代码的正确方法吗?
#include <exception>
#include <iostream>
class A {
public:
A() { throw std::runtime_error("failed to construct"); }
};
int main() {
try {
A a;
} catch (const std::exception& e) {
std::cout << "returining error 1 \n";
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据isocpp.org,在C++中处理构造函数失败的正确方法是:
抛出一个例外.
由于构造函数没有返回类型,因此无法使用错误代码.但是:
如果您没有使用异常的选项,那么"最不好"的解决方法是通过设置内部状态位将对象置于"僵尸"状态,这样对象的行为有点像死了,即使它是技术上还活着.
但是如果可以的话,你应该使用异常来表示构造函数中的失败,如上所述:
在实践中,"僵尸"的东西变得非常难看.当然你应该比zombie对象更喜欢异常,但是如果你没有使用异常的选项,那么僵尸对象可能是"最不好"的选择.