Code Fix

上級 › 例外を捕まえ損ねて terminate する原因と直し方 › パターン5

例外を捕まえ損ねて terminate する原因と直し方

throwで投げた例外をどこのtry-catchでも捕まえられず、プログラム全体が異常終了してしまうバグです。

 1  #include <iostream>
 2  #include <stdexcept>
 3  void divide(int a, int b) {
 4      if (b == 0) {
 5          throw std::runtime_error("division by zero");
 6      }
 7      std::cout << (a / b) << std::endl;
 8  }
 9  int main() {
10      divide(10, __);
                    ^
11      return 0;
12  }
terminate called after throwing an instance of 'std::runtime_error' what(): division by zero Aborted

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

例外を捕まえ損ねて terminate する原因と直し方

C++のランタイムはstd::terminateを呼び出し、プロセスを強制終了させます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)