最終更新:2021-01-07 (木) 18:02:55 (1197d)  

std::terminate
Top / std::terminate

プログラムを異常終了させる

https://cpprefjp.github.io/reference/exception/terminate.html

この関数が呼び出される状況

  • 以下の場合で例外送出により脱出しようとした
    • 例外オブジェクトの初期化完了後~catch節に突入する前の間に呼び出される関数
    • noexceptまたはnoexcept(trueに評価される定数式)が指定されている関数
    • 例外処理に伴う自動変数(スタック上のオブジェクト)のデストラクタ
    • 非ローカル変数の初期化
    • 静的記憶期間・スレッド静的記憶期間のオブジェクトのデストラクタ
    • exit()やquick_exit()内で呼び出されるatexit()やat_quick_exit()で登録した関数
    • set_unexpected()で登録したハンドラで以下すべてを満たす場合
    • 発端となった例外指定に含まれない例外がハンドラから送出された
    • 発端となった例外指定にbad_exceptionが含まれない
    • スレッドの開始関数(threadのコンストラクタで渡した関数)
  • 例外処理中でないのに式を持たないthrow式を実行しようとした
  • デフォルトの予想外の例外のハンドラ(set_unexpected()が呼び出されていない状況でのハンドラ)が呼び出された
  • nested_exception::rethrow_nested()が例外を捕捉していない状況で呼び出された
  • join可能なthread(thread::joinable()がtrueであるもの)に対して、デストラクタまたは代入演算子が実行された

関連