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:

QUnhandledException

パブリック関数

virtual QException *clone() const
virtual void raise() const

詳細説明

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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。