QException Class▲
-
Header: QException
-
Since: Qt 5.0
-
CMake:
find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
-
qmake: QT += core
-
Inherits:
-
Inherited By: QUnhandledException
Detailed Description▲
Qt Concurrent supports throwing and catching exceptions across thread boundaries, provided that the exception inherits from QException and implements 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 Concurrent 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; }

