所以说我们有像伪代码:如何捕捉不是从你的线程抛出?
super_local_thread()
{
try{
throw err;
}catch(err)
{
throw err2;
}
,我们已经推出了具有提升该线程。 我们想用另一个线程来查错它的错误。如何做这样的事情?
所以说我们有像伪代码:如何捕捉不是从你的线程抛出?
super_local_thread()
{
try{
throw err;
}catch(err)
{
throw err2;
}
,我们已经推出了具有提升该线程。 我们想用另一个线程来查错它的错误。如何做这样的事情?
C++ 11指定一个current_exception
功能(在标准,部分18.8异常处理)以允许您这样做。
以下是关于使用此功能的transporting exceptions between threads的MSDN文章。
由于您使用的是Boost,因此current_exception
的Boost文档和transporting exceptions between threads的Boost文章。
你不能;异常只发生在单个线程上。但是,您可以让顶级函数捕获所有异常,并使用其他一些机制将异常报告给其他应用程序。
这MSDN制品可以是
http://msdn.microsoft.com/en-us/library/dd293602.aspx
为了实现传输异常时,Visual C++提供 exception_ptr类型和函数current_exception,rethrow_exception和 copy_exception功能是有用的。
类似于http://stackoverflow.com/questions/233127/how-can-i-propagate-exceptions-between-threads – innochenti 2012-03-16 23:39:28
也许可以使用'std :: async',它捕获你的异常,然后你可以提取例外的'std :: future'对象。 – inf 2012-03-17 09:18:35