C++ の runtime_error と logic_error の違い2019年01月13日 13時25分39秒

std::exception から runtime_error と logic_error が派生されている。runtime_error は動的な問題だと分かるが、logic error は単体で見ると分かりづらい。いくつか調べてみると runtime error と logic error が対になっている様だ。

runtime error はその名の通り、実行時に動的に検出されるエラーを通知するのに throw する。

logic error は各種関数の前提条件などを満たしていない、実装上での異常を告知するのに throw する。大雑把にいえば、ライブラリの実装者が投げる例外だろう。

C++ の例外は、std::exception は exception ヘッダファイルにあり、これらから派生する runtime_error 等は stdexcept ヘッダファイルにある。

コメント

_ (未記入) ― 2020年06月18日 08時17分06秒

logic_errorはプログラムの落ち度つまりバグ
runtime_errorはバグではなく外的要因によるエラー
ですね。
バグは本来assertとstatic_assertで検出すべきものですが、
それをすり抜けて本番環境で発覚した不具合にlogic_errorを使うわけです。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2019/01/13/9024544/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。