QException Class
The QException class provides a base class for exceptions that can be transferred across threads. More...
Header: | #include <QException> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Inherited By: |
Public Functions
QException() | |
QException(const QException &other) | |
virtual | ~QException() |
virtual QException * | clone() const |
virtual void | raise() const |
QException & | operator=(const QException &other) |
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
[noexcept]
QException::QException()
Constructs a QException object.
[constexpr noexcept]
QException::QException(const QException &other)
Creates a copy of other.
Note: Be careful when using this function, as you risk slicing.
See also clone().
[virtual noexcept]
QException::~QException()
Destroys this QException object.
[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; }
[noexcept]
QException &QException::operator=(const QException &other)
Copy-assigns other over this object.
Note: Be careful when using this function, as you risk slicing.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.