Learn what Felgo offers to help your business succeed. Start your free evaluation today! Felgo for Your Business

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:

QUnhandledException

Public Functions

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

Detailed Description

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 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

QException::~QException()

Destroys the instance of QException.

[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; }
Qt_Technology_Partner_RGB_475 Qt_Service_Partner_RGB_475_padded