マルチスレッド C++11 プログラムで例外が処理されない場合、何が起きますか? 質問する

マルチスレッド C++11 プログラムで例外が処理されない場合、何が起きますか? 質問する

C++11 プログラムで 2 つのスレッドを実行していて、そのうちの 1 つが未処理の例外をスローした場合、何が起きますか? プログラム全体が焼け死ぬのでしょうか? 例外がスローされたスレッドだけが死ぬのでしょうか (そして、もしそうなら、この場合例外を取得できますか)? まったく別のことが起きるのでしょうか?

ベストアンサー1

実際には何も変わっていません。n3290 の文言は次のとおりです。

一致するハンドラが見つからない場合は、関数std::terminate()が呼び出されます

の動作はterminateを使用してカスタマイズできますset_terminateが、次のようになります。

必要な行動: A はterminate_handler呼び出し元に戻らずにプログラムの実行を終了します。

そのため、このような場合にはプログラムが終了し、他のスレッドは実行を継続できません。

おすすめ記事