如果类的构造函数中发生错误,通常建议引发异常。
在 Qt 中,没有一个类抛出异常(据我所知)。
Qt 如何处理构造函数中发生的错误?
最佳答案
正如您所说,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
关于c++ - 如果构造函数中发生错误,Qt 会怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48414296/