QException 類

QException 類為可以跨綫程傳輸的異常提供基類。 更多...

頭: #include <QException>
qmake: QT += core
Since: Qt 5.0
繼承者:

QUnhandledException

該類在 Qt 5.0 引入。

公共函數

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

詳細描述

Qt Concurrent supports throwing and catching exceptions across thread boundaries, provided that the exception inherit from QException and implement 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 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; }