エラーメッセージ
プログラムの実行時や構文解析時に問題を検出した際、原因と場所を開発者に伝える通知
プログラミング基礎
エラーメッセージとは
エラーメッセージ (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 ブロックは、問題の発見を遅らせるため避ける。
エラー処理の設計パターンは関連書籍に詳しい。
この記事は役に立ちましたか?