所以说我们有伪代码:
super_local_thread()
{
try{
throw err;
}catch(err)
{
throw err2;
}
我们用boost启动了该线程。 我们想用另一个线程来追查它的错误。怎么做这个?
答案 0 :(得分:4)
C ++ 11指定current_exception
函数(在标准中, 18.8异常处理部分),以便您可以完成此操作。
这是关于transporting exceptions between threads的MSDN文章,它使用了这个函数。
由于您使用的是Boost,因此这里是current_exception
的Boost文档和transporting exceptions between threads上的Boost文章。
答案 1 :(得分:1)
此MSDN文章可能有用
http://msdn.microsoft.com/en-us/library/dd293602.aspx
为了实现传输异常,Visual C ++提供了 exception_ptr类型和current_exception,rethrow_exception和 copy_exception函数。
答案 2 :(得分:0)
你不能;异常仅发生在单个线程上。但是,您可以使用顶级函数捕获所有异常,并使用其他一些机制将异常报告给应用程序的其余部分。