QException Class
The QException class provides a base class for exceptions that can transferred across threads. More...
| Header: | #include <QException> |
| qmake: | QT += core |
| Since: | Qt 5.0 |
| Inherited By: |
This class was introduced in Qt 5.0.
Public Functions
| virtual QException * | clone() const |
| virtual void | raise() const |
Detailed Description
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.
When using QFuture, transferred exceptions will be thrown when calling the following functions:
Member Function Documentation
[virtual] QException *QException::clone() const
In your QException subclass, reimplement clone() like this:
MyException *MyException::clone() const { return new MyException(*this); }
[virtual] void QException::raise() const
In your QException subclass, reimplement raise() like this:
void MyException::raise() const { throw *this; }
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qexception.html