1
我做QException的一個子類,如下所示:Qt的QException子類拋出,但QUnhandledException抓
#include <QtConcurrent>
#include <QException>
class ProcessingException : public QException
{
public:
ProcessingException(QString const& message) :
message(message)
{}
virtual ~ProcessingException()
{
}
void raise() const { throw *this; }
ProcessingException *clone() const { return new ProcessingException(*this); }
QString getMessage() const
{
return message;
}
private:
QString message;
};
在隨即通過QtConcurrent運行我拋出這個子類的實例與throw new ProcessingException("test");
的方法::運行。然後,如果我正確理解文檔,那麼當我用.waitForFinished()
收集未來的結果時,Qt應該重新拋出QException子類。但是,使用這種方法,我只能捕捉到一個QUnhandledException:
try
{
watcher->waitForFinished();
}
catch(const ProcessingException &e)
{
qCritical() << "Caught:" << e.getMessage();
}
catch(const QUnhandledException &e)
{
qCritical() << "Uncaught qexception!";
}
我錯過了什麼?