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

标签 c++ qt

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

在 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/

相关文章:

c++ - Qt 中的 PaintEvent 为类的每个实例绘制相同的所有小部件

c++ - 将内存数据 ptr 映射到 qt 输入字段

C++ - 高效计算 vector 矩阵乘积

c++ - 没有用于调用可变参数包函数的匹配函数

c++ - ld : symbol(s) not found for architecture x86_64 using GNU Make and clang

c++ - QSqlQuery 没有正确回答

c++ - 将预构建的 Qt 二进制文件用于 MSVS 2008 和 MSVS 2010

qt - Qt Creator JS 中有哪些 JS 对象可用 : variable expansion?

c++ - 在 QProcess 中启动的命令在 Linux 上不返回响应

c++ - 纯虚拟和内联定义