Boost线程异常处理

6
我正在尝试在一个线程中抛出异常并允许调用进程捕获它。然而,似乎这将导致整个应用程序崩溃。请参见附加的测试代码,从未打印任何退出语句。
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个回答

6

2
这在C++11中变得更容易了(任何异常都可以被捕获在std::exception_ptr中)。 - Cubbi
@Cubbi 谢谢你的信息,我之前不知道 :) - Ralf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接