我正在尝试学习 C++(目前正在使用 C),并且我正在花时间在互联网上搜索好的教程(也许有人对我有很好的建议)。
但我找不到有关错误处理标准方法的信息。
假设我有一个像这样的简单类(我的 example.h 文件):
const int MAX = 1000;
class Example {
public:
Example(int x);
private:
int x_val;
}
所以我只是想做的是检查,当创建类 Example 的对象时,是否允许给定坐标,如果它高于允许值,则中止程序?
所以在 .cpp 文件中:
Example::Example(int x){
/*So is it common, to do something like this:*/
if (x >= MAX){
std::cerr << "Error while generating example object" << std::endl;
return 0;
}
/*or is this more convenient:*/
throw std::invalid_argument( "received to high value" );
x_val = x;
}
最佳答案
当构造函数失败时抛出异常。
因为:
- 没有正确初始化的对象是没有意义的。
- 意外忽略异常是不可能的(与错误代码或日志消息不同)。
- 您要么拥有正确初始化的对象,要么根本没有对象。简单而强大。
- 析构函数不需要处理部分初始化的对象销毁,这可能根本不可能,因为未初始化的成员可能具有不确定的值。当构造函数抛出异常时,不会调用析构函数(尽管会以相反的顺序调用已初始化成员和基类的析构函数)。
关于c++ - 在简单的 cpp 类构造函数中处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52669732/