AI AIワークナビ AI Work Studio
メニュー
AIワークナビ ホーム

コンパイルエラーと実行時エラーの違い|C・Python・JavaScriptで比較

結論

コンパイルエラーは、コードを実行できる形へ変換する段階で見つかるエラーです。実行時エラーは、コードの文法を通過したあと、実際に処理している途中で発生します。

初心者は、まず「実行ボタンを押したあと、プログラムの処理が始まったか」を確認してください。Cのセミコロン不足は処理が始まる前に止まります。一方、Pythonの0除算やJavaScriptの未定義変数は、問題の行を実行した時点で止まります。

発生している問題

エラーという言葉だけを見ると、すべて同じ原因に思えるかもしれません。しかし、直す場所はエラーが起きた段階で変わります。

  • コンパイルエラー: 記号、文法、宣言などを確認する
  • 実行時エラー: 入力値、変数の中身、処理の順番などを確認する

AI Work Studioでは、C/C++、Python、JavaScriptを同じ画面で切り替えられます。3つの例を比べると、エラー文を読む順番が分かりやすくなります。

原因

Cでは、ソースコードを解析して実行可能な形へ変換してから処理します。セミコロンがないコードは文法を正しく解析できないため、printfも実行されません。C言語委員会の公開草案でも、構文規則や制約に違反した翻訳単位には診断メッセージが必要とされています。

Python公式チュートリアルは、文法的に正しい文でも実行しようとしたときにエラーになる場合があり、それを例外と説明しています。ZeroDivisionErrorは、割り算を実行した時点で発生する例外です。

JavaScriptの仕様では、解決できない変数参照から値を取得しようとするとReferenceErrorになります。構文解析を通過しても、存在しないscoreを読む行で処理が止まります。

修正前コード

Cのコンパイルエラー

printfの末尾にセミコロンがありません。

#include <stdio.h>

int main() {
    printf("Hello from C\n")
    return 0;
}

ローカルのGCC 16.1.0では、次のエラーになりました。

error: expected ';' before 'return'

AI Work StudioではERROR: Parsing Failure:と表示され、;が必要な位置でreturnを検出しました。どちらもプログラム本体は実行されません。

Pythonの実行時エラー

文法は正しいため実行が始まりますが、peopleが0の状態で割り算を行う行で止まります。

total = 1200
people = 0

print(total / people)
ZeroDivisionError: division by zero

JavaScriptの実行時エラー

scoreを宣言していないまま読み取っています。

console.log(score);
ReferenceError: score is not defined

AI Work StudioのConsoleでは、先頭に[JS error]が付きました。

修正後コード

Cは文法を直す

printfの末尾へセミコロンを追加します。

#include <stdio.h>

int main() {
    printf("Hello from C\n");
    return 0;
}

Pythonは値を確認する

割る前に0かどうかを確認します。

total = 1200
people = 0

if people == 0:
    print("0では割れません")
else:
    print(total / people)

JavaScriptは先に変数を宣言する

値を読む前にscoreを宣言します。

const score = 80;

console.log(`score: ${score}`);

実行結果

修正後は、ローカル環境と公開中のAI Work Studioで次の表示になりました。

C/C++:
Hello from C
終了コード: 0

Python:
0では割れません

JavaScript:
score: 80

Cはコンパイルが成功してからHello from Cを表示しました。PythonとJavaScriptは問題の値や変数を修正したことで、最後まで処理できました。

よくある間違い

エラー名だけで判断する

SyntaxErrorという名前があっても、言語や実行環境によって検出される段階は異なります。まずエラー全文、対象行、実行結果が出る前か後かを確認してください。

コンパイル成功なら正しいと思う

コンパイル成功は文法などの確認を通過したという意味です。0除算、配列の範囲外、入力値による条件ミスまで防げるわけではありません。

最初のエラーを直さず次の行を見る

文法エラーでは、実際の書き忘れ位置より後ろの行が示される場合があります。表示された行だけでなく、その直前の括弧、引用符、セミコロンも確認します。

AI Work Studioで試す手順

  1. AI Work Studioを開きます。
  2. C/C++のmain.cppへ修正前コードを貼り、C/C++を実行を押します。
  3. セミコロンを追加し、Hello from Cと終了コード0を確認します。
  4. Pythonのmain.pyで0除算と修正後コードを順番に実行します。
  5. JavaScriptのscript.jsでConsoleを開き、ReferenceErrorscore: 80を確認します。

エラー文は環境によって周辺表示が変わります。名前だけを覚えるのではなく、「実行前に止まったか」「処理中に止まったか」を見分ける練習に使ってください。

まとめ

コンパイルエラーは実行前の変換・解析段階、実行時エラーは処理が始まったあとの段階で発生します。Cの文法エラーでは記号や宣言を、PythonやJavaScriptの実行時エラーでは値や変数の状態を確認するのが基本です。

エラーが出たら、全文、対象行、発生した段階の3点を順番に確認すると、原因を絞り込みやすくなります。

関連記事

公式情報