如何捕捉不是从你的线程抛出?

所以说我们有伪代码:

super_local_thread() { try{ throw err; }catch(err) { throw err2; } 

我们已经推出了这个线程。 我们想用另一个线程来查错。 如何做这样的事情?

C ++ 11指定了一个current_exception函数(在标准的第18.8节“ 异常处理”中 ),以便您可以完全做到这一点。

这里是一个关于在使用这个函数的线程之间传输异常的MSDN文章。

由于您正在使用Boost,因此在current_exception和Boost文章中介绍了在线程间传输异常的Boost文档。

此MSDN文章可能会有用

http://msdn.microsoft.com/en-us/library/dd293602.aspx

为了实现传输异常,Visual C ++提供了exception_ptr类型和current_exception,rethrow_exception和copy_exception函数。

你不能; 异常只发生在一个线程上。 但是,您可以让顶级函数捕获所有异常,并使用其他一些机制将异常报告给应用程序的其余部分。