我開始玩弄的boost ::線程,但我有點堅持了這個問題:使用異常
我不明白爲什麼這個程序崩潰的儘快拋出異常,因爲我試圖在線程中捕獲它。我認爲只要處理髮生在與投擲相同的線程中,就可以處理異常。
#include <boost/thread.hpp>
#include <exception>
using namespace std;
void doWork();
void thrower();
int main(int argc, char** argv){
boost::thread worker(doWork);
worker.join();
return 0;
}
void doWork(){
try{
thrower();
}
catch(const exception &e){
//handle exception
}
}
void thrower(){
// program terminates as soon as the exception is thrown
throw exception();
}
其他信息:
*使用MINGW32
*升壓v.1.44
*靠在螺紋LIB選自出多個共享庫的
如果沒有正確的前向聲明和'using namespace std',甚至不會編譯。但是如果我添加這些,在Ubuntu Linux w/Boost 1.40上可以正常工作。 – 2010-10-11 15:04:51
對不起,這是一個縮減版本的代碼,以顯示問題。你是靜態鏈接還是動態鏈接? – zitroneneis 2010-10-11 15:11:39
也適合我。 Mac OS X使用Boost 1.44動態鏈接。 – 2010-10-11 15:37:31