QException 类

QException 类提供可以跨线程转移异常的基类。 更多...

头: #include <QException>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
继承者: QUnhandledException

公共函数

virtual QException * clone () const
virtual void raise () const

详细描述

Qt Concurrent supports throwing and catching exceptions across thread boundaries, provided that the exception inherits from QException and implements two helper functions:

class MyException : public QException
{
public:
    void raise() const override { throw *this; }
    MyException *clone() const override { return new MyException(*this); }
};
					

QException subclasses must be thrown by value and caught by reference:

try  {
    QtConcurrent::blockingMap(list, throwFunction); // throwFunction throws MyException
} catch (MyException &e) {
    // handle exception
}
					

If you throw an exception that is not a subclass of QException, the Qt Concurrent functions will throw a QUnhandledException in the receiver thread.

当使用 QFuture , transferred exceptions will be thrown when calling the following functions:

成员函数文档编制

[虚拟] 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; }