QException 类

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

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

QUnhandledException

公共函数

QException ()
QException (const QException & other )
virtual ~QException ()
virtual QException * clone () const
virtual void raise () const
QException & operator= (const QException & other )

详细描述

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:

成员函数文档编制

[noexcept] QException:: QException ()

Constructs a QException object.

[constexpr noexcept] QException:: QException (const QException & other )

创建副本为 other .

注意: Be careful when using this function, as you risk slicing.

另请参阅 clone ().

[virtual noexcept] QException:: ~QException ()

销毁此 QException 对象。

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

[noexcept] QException &QException:: operator= (const QException & other )

Copy-assigns other over this object.

注意: Be careful when using this function, as you risk slicing.