QException 類提供可以跨綫程轉移異常的基類。 更多...
| 頭: |
#include <QException>
|
| CMake: |
find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
|
| qmake: |
QT += core
|
| 繼承者: |
| QException () | |
| QException (const QException & other ) | |
| virtual | ~QException () |
| virtual QException * | clone () const |
| virtual void | raise () const |
| QException & | operator= (const QException & other ) |
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.
當使用 QFuture , transferred exceptions will be thrown when calling the following functions:
[noexcept]
QException::
QException
()
Constructs a QException object.
[constexpr noexcept]
QException::
QException
(const
QException
&
other
)
創建副本為 other .
注意: Be careful when using this function, as you risk slicing.
另請參閱 clone ().
[virtual noexcept]
QException::
~QException
()
銷毀此 QException 對象。
[virtual]
QException
*QException::
clone
() const
在 QException 子類,重實現 clone() 像這樣:
MyException *MyException::clone() const { return new MyException(*this); }
[virtual]
void
QException::
raise
() const
在 QException 子類,重實現 raise() 像這樣:
void MyException::raise() const { throw *this; }
[noexcept]
QException
&QException::
operator=
(const
QException
&
other
)
Copy-assigns other over this object.
注意: Be careful when using this function, as you risk slicing.