バグの理解 : 3 種類のプログラミング エラー

更新 : 2007 年 11 月

このレッスンでは、プログラムを記述しているときに発生する可能性のあるさまざまな種類のエラーについて説明します。

多くの経験を積んだプログラマですら間違いを犯します。このため、アプリケーションをデバッグして、そうした間違いを発見する方法を知ることは、プログラミングの重要な要素です。しかし、デバッグのプロセスについて学習する前に、発見して修復する必要のあるバグの種類を知っておくと役に立ちます。

プログラミング エラーは、コンパイル エラー、ランタイム エラー、および論理エラーの 3 種類に分類されます。これらの各エラーをデバッグするためのテクニックについては、次の 3 つのレッスンで説明します。

コンパイル エラー

コンパイル エラーは、コンパイラ エラーとも呼ばれ、プログラムの実行を妨げるエラーです。F5 キーを押してプログラムを実行すると、Visual Basic はコードをコンピュータが理解できるバイナリ言語にコンパイルします。Visual Basic コンパイラは、理解できないコードを検出すると、コンパイラ エラーを発行します。

ほとんどのコンパイラ エラーは、コード入力時の間違いが原因で発生します。たとえば、キーワードのスペルを間違えたり、必要な区切り記号を挿入しなかったり、先に If ステートメントを使用せずに End If ステートメントを使用したりした場合などです。

しかし、Visual Basic のコード エディタは、プログラムの実行を試行する前にこうした間違いを識別するよう設計されています。コンパイル エラーの発見および修復方法については、次のレッスン (「ミスのチェック : コンパイラ エラーを検出して修正する」) で説明します。

ランタイム エラー

ランタイム エラーは、プログラムの実行時に発生するエラーです。このエラーは、通常、実行できない操作をプログラムが試行したときに発生します。

その 1 つの例として、ゼロによる除算が挙げられます。次のステートメントがあるとします。

Speed = Miles / Hours

変数 Hours の値が 0 の場合、除算は失敗し、ランタイム エラーが発生します。このエラーはプログラムの実行時でないと検出できず、また Hours に有効値が格納されている場合には、エラーはまったく発生しません。

ランタイム エラーが実際に発生した場合は、Visual Basic のデバッグ ツールを使用することにより原因を特定できます。ランタイム エラーの発見および修復方法については、「ランタイム エラーの検索と除去」のレッスンで説明します。

論理エラー

論理エラーは、プログラムが目的の動作を行うことを妨げるエラーです。コードのコンパイルと実行でエラーが発生しなくても、操作の結果が予想と異なる場合があります。

たとえば、初期値として空白の文字列が設定されている FirstName という変数があるとします。プログラムの後半で、FirstName を LastName という別の変数と連結して、フル ネームを表示します。しかし、FirstName に値を代入し忘れた場合、意図していたフル ネームではなく、姓だけが表示されます。

論理エラーは発見および修復が最も難しいエラーですが、Visual Basic にはこの作業をより簡単にするデバッグ ツールも用意されています。論理エラーの発見および修復方法については、「想定外の現象 : 論理エラーの検出」で説明します。

次の手順

このレッスンでは、プログラミング エラーの 3 つのカテゴリについて説明しました。次のレッスンでは、コンパイラ エラーのデバッグについて説明します。

次のレッスン : 「ミスのチェック : コンパイラ エラーを検出して修正する

参照

処理手順

エラーの検出 : Visual Basic のデバッグの概要

その他の技術情報

問題の確認 : デバッグを行ってエラーを検出し、修正する