如何从构造函数返回错误代码?

新手上路,请多包涵

我试图从构造函数返回错误代码,因为构造函数不返回错误代码,所以我试图在构造函数上放置一个异常。然后在 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;
}

原文由 vanta mula 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

根据 isocpp.org ,在 C++ 中处理构造函数失败的正确方法是:

抛出异常。

由于构造函数没有返回类型,因此无法使用错误代码。但 :

如果您没有使用异常的选项,“最坏”的解决方法是通过设置内部状态位将对象置于“僵尸”状态,这样对象的行为就好像它已经死了,即使它是技术上还活着。

但是如果可以的话,你真的应该使用异常来表示构造函数中的失败,如前所述:

在实践中,“僵尸”的东西变得非常丑陋。当然你应该更喜欢异常而不是僵尸对象,但是如果你没有使用异常的选项,僵尸对象可能是“最不坏”的选择。

原文由 HatsuPointerKun 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题