跨线程的异常传播?

时间:2011-09-01 15:05:00

标签: multithreading exception-handling c++11

This question有关。

C ++ 11增加了将异常编组到不同线程(使用std::exception_ptr)并恢复其传播的功能。

我想知道这样的传播是否是自动的,即:如果我在一个线程中无法处理异常,它是否会在父线程中自动传播?

我有点怀疑它(或者它必须以某种方式明确地等待join),但我对C ++ 11还不够精明。值得注意的是,我认为在std::future的情况下,它可以自动存储异常。

1 个答案:

答案 0 :(得分:9)

thread不会自动传播。如果一个线程抛出,并且没有捕获到该异常,程序将终止,无论如何。

futureshared_future会在子线程中存储未捕获的异常。然后,在调用get时会自动传播该异常。