The Exception class provides a base class for exceptions that can transferred across threads. More...
#include <QtCore>
Inherited by: QtConcurrent::UnhandledException.
This class was introduced in Qt 4.4.
virtual Exception * | clone () const |
virtual void | raise () const |
The Exception 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 QtConcurrent::Exception and implement two helper functions:
class MyException : public QtConcurrent::Exception { public: void raise() const { throw *this; } Exception *clone() const { return new MyException(*this); } };
QtConcurrent::Exception 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 QtConcurrent::Exception, the Qt Concurrent functions will throw a QtConcurrent::UnhandledException in the receiver thread.
When using QFuture, transferred exceptions will be thrown when calling the following functions:
In your QtConcurrent::Exception subclass, reimplement clone() like this:
MyException *MyException::clone() const { return new MyException(*this); }
In your QtConcurrent::Exception subclass, reimplement raise() like this:
void MyException::raise() const { throw *this; }
© 2008-2011 Nokia Corporation and/or its subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation in Finland and/or other countries worldwide.
All other trademarks are property of their respective owners. Privacy Policy
Licensees holding valid Qt Commercial licenses may use this document in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Nokia.
Alternatively, this document may be used under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation.