Exception类为那些可在线程之间传递的异常提供咯一个基类。
Qt Concurrent支持在线程之间抛出及捕获异常,前提条件是该异常继承自QtConcurrent::Exception 并且实现咯两个辅助函数:
class MyException : public QtConcurrent ::Exception
{
public:
void raise() const { throw *this; }
Exception *clone() const { return new MyException(*this); }
};
QtConcurrent::Exception的子类必需以值的方式抛出,以引用的方式来捕获:
try {
QtConcurrent ::blockingMap(list, throwFunction); // throwFunction抛出MyException
} catch (MyException &e) {
//处理异常
}
如果妳抛出一个并非是QtConcurrent::Exception 子类的异常,则Qt Concurrent 函数会在接收的线程里抛出一个 QtConcurrent::UnhandledException 。
在使用 QFuture 时,调用以下函数会抛出已传递的异常:
•. QFuture::waitForFinished ()
•. QFuture::result ()
•. QFuture::resultAt ()
•. QFuture::results ()
HxLauncher: Launch Android applications by voice commands