The QException class provides a base class for exceptions that can transferred across threads. 更多...
头: | #include <QException> |
qmake: | QT += core |
Since: | Qt 5.0 |
继承者: | QUnhandledException |
virtual QException * | clone () const |
virtual void | raise () const |
The QException class provides a base class for exceptions that can transferred across threads.
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 { throw *this; } MyException *clone() const { 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; }