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 &
amp;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
; }