如果在类的构造函数中发生错误,通常建议引发异常。
在Qt中,没有一个类抛出异常(据我所知)。
Qt如何处理构造函数中发生的错误?
答案 0 :(得分:3)
正如你所说,Qt没有使用异常,在Qt端构建QObject
将不会失败(仍然可能会失败C ++内存分配)。
你在构造函数中有什么样的错误?
如果有必要,Qt将创建一个带有无效状态的对象,在我看来,它不是一个构造函数错误,应该取消对象创建,而是更多的未完全初始化 - 尚未 - 工作良好对象状态。
示例:
QRegExp regex1; // isValid() : false
QRegExp regex2("nop{"); // isValid() : false
// regex2.errorString() => "bad repetition syntax"
QSqlDatabase db; // isValid() : false
QDate date1; // isValid() : false
QDate date2(0, 0, 0); // isValid() : false
QDate date3(-1, 0, 1024); // isValid() : false
QString str1; // isNull() : true, isEmpty() : true
QString str2(""); // isNull() : false, isEmpty() : true