エラーメッセージ

プログラムの実行時や構文解析時に問題を検出した際、原因と場所を開発者に伝える通知

プログラミング基礎

エラーメッセージとは

エラーメッセージ (Error Message) は、プログラムが問題を検出したときに出力する通知である。何が起きたか、どこで起きたか、なぜ起きたかを開発者に伝え、修正の手がかりを提供する。

エラーの種類

エラーは発生するタイミングで大きく 3 つに分かれる。

種類 発生タイミング
構文エラー コードの解析時 括弧の閉じ忘れ、セミコロンの欠落
実行時エラー プログラムの実行中 null 参照、ゼロ除算、型の不一致
論理エラー 実行は成功するが結果が間違い 条件式の誤り、計算ロジックのバグ

構文エラーと実行時エラーはエラーメッセージが出るが、論理エラーはメッセージが出ないため発見が難しい。

エラーメッセージの読み方

エラーメッセージには通常、以下の情報が含まれる。

TypeError: Cannot read properties of undefined (reading 'name')
    at getUser (src/user.ts:15:20)
    at main (src/index.ts:8:10)

1 行目がエラーの種類と内容。TypeError が種類、Cannot read properties of undefined が内容である。2 行目以降がスタックトレースで、エラーが発生した場所を示す。src/user.ts:15:20 は「user.ts の 15 行目 20 文字目」を意味する。

よくあるエラーメッセージ

メッセージ 原因 対処
ReferenceError: x is not defined 未宣言の変数を参照 変数名のスペルミスを確認
TypeError: x is not a function 関数でないものを呼び出し 変数の型を確認
SyntaxError: Unexpected token 構文の誤り 括弧や引用符の対応を確認
RangeError: Maximum call stack 無限再帰 基底条件を確認
Cannot find module モジュールが見つからない パスとインストール状況を確認

エラーメッセージを活用するコツ

最初の 1 行を読む

スタックトレースが長くても、最初の 1 行にエラーの本質が書かれている。まず 1 行目を読み、エラーの種類と内容を把握する。

ファイル名と行番号を確認する

スタックトレースの中から、自分が書いたコードのファイル名を探す。node_modules 内のファイルは無視してよい。自分のコードの行番号を特定し、その行を確認する。

エラーメッセージで検索する

エラーメッセージをそのまま検索エンジンに貼り付けると、同じ問題に遭遇した人の解決策が見つかることが多い。

良いエラーメッセージの設計

自分でエラーメッセージを書く場合は、以下を心がける。

// ❌ 曖昧なメッセージ
throw new Error("エラーが発生しました");

// ✅ 具体的なメッセージ
throw new Error(
  `ユーザー ID "${id}" が見つかりません。` +
  `有効な ID は正の整数です。受け取った値: ${id}`
);
原則 説明
何が起きたか エラーの種類を明示する
どこで起きたか 関連するデータや文脈を含める
どうすればよいか 修正のヒントを添える

try-catch によるエラー処理

エラーが発生しうる処理は try-catch で囲み、適切に処理する。

try {
  const data = JSON.parse(rawInput);
  processData(data);
} catch (error) {
  if (error instanceof SyntaxError) {
    console.error("JSON の形式が不正です:", error.message);
  } else {
    throw error; // 想定外のエラーは再送出
  }
}

エラーを握りつぶす空の catch ブロックは、問題の発見を遅らせるため避ける。

エラー処理の設計パターンは関連書籍に詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事