Multithreading Boost线程异常处理

Multithreading Boost线程异常处理,multithreading,exception,boost,exception-handling,boost-thread,Multithreading,Exception,Boost,Exception Handling,Boost Thread,我试图在线程中抛出一个异常,并允许调用进程捕获它。但是,这似乎会导致整个应用程序崩溃。请参阅随附的测试代码从不打印任何退出语句 1 #include <boost/thread.hpp> 2 #include <iostream> 3 4 void wait(int seconds) 5 { 6 boost::this_thread::sleep(boost::posix_time::seconds(seconds)); 7 } 8 9 void thread

我试图在线程中抛出一个异常,并允许调用进程捕获它。但是,这似乎会导致整个应用程序崩溃。请参阅随附的测试代码从不打印任何退出语句

1 #include <boost/thread.hpp>
2 #include <iostream>
3
4 void wait(int seconds)
5 {
6       boost::this_thread::sleep(boost::posix_time::seconds(seconds));
7 }
8
9 void thread()
10 {
11       for (int i = 0; i < 5; ++i)
12       {
13           wait(1);
14           std::cout << i << std::endl;
15       }
16       throw;
17 }
18
19 int main()
20 {
21     try
22     {
23         boost::thread t(thread);
24         t.join();
25         std::cout << "Exit normally\n";
26     }
27     catch (...)
28     {
29         std::cout << "Caught Exception\n";
30     }
31 }
1#包括
2#包括
3.
4无效等待(整数秒)
5 {
6 boost::this_线程::sleep(boost::posix_时间::seconds(秒));
7 }
8.
9空螺纹()
10 {
11表示(int i=0;i<5;++i)
12       {
13等待(1);

14 std::cout查看boost异常:。
这种方法对我来说效果很好。

在C++11中这变得更容易了(任何异常都可以在
std::exception\u ptr
中捕获)@Cubbi谢谢你提供的信息,我不知道:)