如果构造函数中发生错误,Qt会怎么做?

时间:2018-01-24 03:17:52

标签: c++ qt

如果在类的构造函数中发生错误,通常建议引发异常。

在Qt中,没有一个类抛出异常(据我所知)。

Qt如何处理构造函数中发生的错误?

1 个答案:

答案 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