C++11 プログラムで 2 つのスレッドを実行していて、そのうちの 1 つが未処理の例外をスローした場合、何が起きますか? プログラム全体が焼け死ぬのでしょうか? 例外がスローされたスレッドだけが死ぬのでしょうか (そして、もしそうなら、この場合例外を取得できますか)? まったく別のことが起きるのでしょうか?
ベストアンサー1
実際には何も変わっていません。n3290 の文言は次のとおりです。
一致するハンドラが見つからない場合は、関数
std::terminate()
が呼び出されます
の動作はterminate
を使用してカスタマイズできますset_terminate
が、次のようになります。
必要な行動: A は
terminate_handler
呼び出し元に戻らずにプログラムの実行を終了します。
そのため、このような場合にはプログラムが終了し、他のスレッドは実行を継続できません。