Rumah > Soal Jawab > teks badan
小白初学c++,c++类设计时,如果构造函数发生错误,应该如何处理比较好?
比如,设计一个矩形类Class Rectangle, 其构造函数为 Rectangle(int l, int w);显然长和宽不能为负数,但如果使用者传递给构造函数负数,应该如何设计类,使其能很好的处理这种错误?
方案:输出错误,终结程序?;构造函数中抛出异常? 各位大神们在实际中应该如何处理这种问题?
高洛峰2017-04-17 13:45:21
构造函数抛异常并没有什么问题,只有析构函数才不能抛出异常
或者直接将类型定义为unsigned int类型,或者将l,w操作放在新的init函数内
黄舟2017-04-17 13:45:21
可以抛出异常,不过要小心的处理,如果你构造函数中分配了内存或者其他的东西,对象没有构造完毕是不会调用析构函数的,如果你的构造函数很简单,那是没有问题的
还有c++标准说析构函数不要抛出异常
。。
或者加一个init
函数,当然要用文档说清楚,如果不调用init
后果是不可预料的。。