【发布时间】:2018-01-20 11:34:49
【问题描述】:
我试图从构造函数返回错误代码,因为构造函数 不返回错误代码,我试图在 构造函数。然后在 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;
}
【问题讨论】:
-
对我来说,让构造函数 noexcept 是一个好习惯……也许,一个好方法可以给对象设置一个状态,比如:无效。我也在寻找更好的答案
-
只使用例外。错误返回值有各种各样的问题,尤其是它们太容易被忽略。
-
是的,构造函数应该构造一个有效的对象或者抛出一个异常。
-
@Antoine 这是一个可怕的想法,并且一再被证明有很多很多问题,只需使用例外。
-
@NeilButterworth 是的,感谢您提供了一个愚蠢的编码标准示例。
标签: c++ exception constructor return-code