QUnhandledException 类
QUnhandledException 类表示 Qt 并发工作线程中的未处理异常。 更多...
头文件 | #include <QUnhandledException> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承 | QException |
公开函数
(自 6.0) | QUnhandledException(std::__exception_ptr::exception_ptr exception = nullptr) |
QUnhandledException(const QUnhandledException &other) | |
QUnhandledException(QUnhandledException &&other) | |
(since 6.0) std::__exception_ptr::exception_ptr | exception() const |
(since 6.0) void | swap(QUnhandledException &other) |
QUnhandledException & | operator=(const QUnhandledException &other) |
详细信息
如果一个工作线程抛出了一个不是 QException 子类的异常,则 Qt Concurrent 函数将在接收线程侧抛出 QUnhandledException。已抛出的实际异常信息将保存在 QUnhandledException 类中,可以使用 exception() 方法获取。例如,您可以这样处理 QUnhandledException 维护的异常
try { auto f = QtConcurrent::run([] { throw MyException {}; }); // ... } catch (const QUnhandledException &e) { try { if (e.exception()) std::rethrow_exception(e.exception()); } catch (const MyException &ex) { // Process 'ex' } }
不支持从此类继承。
成员函数文档
[noexcept, since 6.0]
QUnhandledException::QUnhandledException(std::__exception_ptr::exception_ptr exception = nullptr)
构造一个 QUnhandledException 对象。如果传递了 exception,则保存实际异常对象的指针。
此功能自 Qt 6.0 开始引入。
另请参阅exception().
[noexcept]
QUnhandledException::QUnhandledException(const QUnhandledException &other)
构造一个 QUnhandledException 对象,作为 other 的副本。
[noexcept]
QUnhandledException::QUnhandledException(QUnhandledException &&other)
Move-constructs 创建一个 QUnhandledException 对象,使其指向与其他相同的对象。
[since 6.0]
std::__exception_ptr::exception_ptr QUnhandledException::exception() const
返回指向在当前 QUnhandledException 中保存的实际异常的指针。如果没有指向异常对象,则返回空指针。
此功能自 Qt 6.0 开始引入。
[noexcept, since 6.0]
void QUnhandledException::swap(QUnhandledException &other)
交换此 QUnhandledException 与 other。此函数非常快速且永远不会失败。
此功能自 Qt 6.0 开始引入。
[noexcept]
QUnhandledException &QUnhandledException::operator=(const QUnhandledException &other)
将 other 赋值给此 QUnhandledException 对象,并返回对此 QUnhandledException 对象的引用。
© 2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。所提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款获得许可。Qt 及相关商标是芬兰 Qt 公司及/或在其他国家/地区的商标。所有其他商标均为各自所有者财产。