QException 类
QException 类为可以在线程之间传递的异常提供了一个基类。更多信息...
头文件 | #include <QException> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承自 |
公共函数
详细描述
Qt 并发支持在线程边界抛出和捕获异常,前提是异常继承自 QException 并实现了两个辅助函数
class MyException : public QException { public: void raise() const override { throw *this; } MyException *clone() const override { return new MyException(*this); } };
QException 子类必须按值抛出和按引用捕获
try { QtConcurrent::blockingMap(list, throwFunction); // throwFunction throws MyException } catch (MyException &e) { // handle exception }
如果您抛出的异常不是 QException 的子类,则在接收器线程中,Qt 并发函数将抛出 Qt 并发 的 QUnhandledException。
在使用 QFuture 时,以下函数调用时将抛出传递的异常
成员函数文档
[虚拟]
QException *QException::clone() const
在您的 QException 子类中,重实现 clone() 如下
MyException *MyException::clone() const { return new MyException(*this); }
[虚拟]
void QException::raise() const
在您的 QException 子类中,重实现 raise() 如下
void MyException::raise() const { throw *this; }
© 2024 The Qt Company Ltd。本文件中包含的文档贡献是各自所有者的版权。本文件中提供的文档是根据自由软件基金会的《GNU 自由文档许可证版本 1.3》条款许可的。Qt 以及相应的标志是 Finland 和/或全世界的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。