所以说我们有伪代码:
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函数。
你不能; 异常只发生在一个线程上。 但是,您可以让顶级函数捕获所有异常,并使用其他一些机制将异常报告给应用程序的其余部分。