所以說我們有像僞代碼:如何捕捉不是從你的線程拋出?
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