ランタイムエラー 【runtime error】 実行時エラー
概要
ランタイムエラー(runtime error)とは、コンピュータプログラムの実行時に発生するエラーのこと。実行を継続できないほどの致命的な問題であり、プログラムはその時点で実行を中断して直ちに異常終了させられる。通常、プログラムは開発時に人間の記述したソースコードからコンピュータの実行可能な形式に変換(コンパイル/アセンブル)されるため、この段階で解釈・変換できないようなコードの形式的な記述の誤りや欠陥については検知・修正される。
ランタイムエラーはこのような形式上のチェックでは未然に防げない種類のエラーであり、処理の内容や実行時の状況により様々な要因により発生する。実行時の環境や入力データ、外部との入出力などに異状や想定外の状況が生じたり、単体では問題ない複数のコードの組み合わせや論理に致命的な矛盾や欠陥がある場合などに発生することが多い。
例えば、処理可能な範囲を大幅に外れた値や長過ぎるデータの入力が行われたり、起動時に確保できたメモリ容量が最低限必要なサイズを下回っていたり、実行に必要なライブラリなど外部のプログラムが実行環境に存在しないなど、開発時の想定や前提が成立しない状態に陥るとランタイムエラーを生じて終了せざるを得なくなる。
また、連続したメモリ領域に先頭から順番にデータを書き込んでいくような処理を記述する際に、終端を検知して終了するコードを記述し忘れると、実行時に領域の終端を超えて書き込みを行おうとしてしまい言語によってはランタイムエラーとなる。個々のコードの記述が形式的に正しく、実行可能なプログラムが構成できても、全体としては誤った論理に基づいてプログラムが作成されているためにこのような事態が生じる。
一方、ソースコードから実行形式に変換する際にコード記述の形式的な誤りなどにより生じるエラーを「コンパイルエラー」(complile error)という。コンパイル処理は中断され、実行可能なプログラムは作成されない。また、開発時にコンパイル等の工程がなくソースコードを実行時に動的に実行可能コードに変換するタイプの言語(スクリプト言語)や言語処理系(インタプリタ/仮想マシンなど)の場合には、コードの形式的な誤りも含めすべてのエラーがランタイムエラーとなる。