QException Class
QException クラスは、スレッド間で転送可能な例外の基底クラスを提供します。詳細...
Header: | #include <QException> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Inherited By: |
パブリック関数
詳細説明
Qt Concurrent は、例外が QException を継承し、2 つのヘルパー関数を実装している場合に限り、スレッドの境界を越えて例外をスローおよびキャッチすることをサポートします:
class MyException : public QException { public: void raise() const override { throw *this; } MyException *clone() const override { return new MyException(*this); } };
QException のサブクラスは、値によってスローされ、参照によってキャッチされなければなりません:
try { QtConcurrent::blockingMap(list, throwFunction); // throwFunction throws MyException } catch (MyException &e) { // handle exception }
QException のサブクラスは値でスローし、参照でキャッチする必要があります。QException のサブクラスでない例外をスローすると、Qt Concurrent関数は受信スレッドでQUnhandledException をスローします。
QFuture を使用する場合、以下の関数を呼び出すと転送された例外がスローされます:
メンバ関数のドキュメント
[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; }
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。