カテゴリ: JavaScript 更新日: 2026/03/07

JavaScriptのエラーと例外の基本!初心者がよく出会うエラーとその対処法まとめ

JavaScriptのエラーと例外の基本!初心者がよく出会うエラーとその対処法まとめ
JavaScriptのエラーと例外の基本!初心者がよく出会うエラーとその対処法まとめ

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptでプログラムが急に止まって、よく意味がわからないエラーが出るんです。どうすればいいですか?」

先生

「それは『エラー』や『例外』と呼ばれるもので、プログラムが正常に動くのを妨げるものです。まずは種類と対処法を覚えましょう。」

生徒

「種類があるんですか?」

先生

「はい。初心者がよく出会うものをまとめて、対応方法までやさしく解説します!」

1. エラーと例外って何?「動かない」の正体を知ろう

1. エラーと例外って何?「動かない」の正体を知ろう
1. エラーと例外って何?「動かない」の正体を知ろう

プログラミングをしていると必ず遭遇するのが「動かない!」という瞬間です。これには大きく分けて「エラー(文法ミス)」「例外(実行中のトラブル)」の2種類があります。まずはこの違いを、料理に例えて超シンプルに理解しましょう。

1-1. 文法エラー(Syntax Error):書くルールを間違えた時

「エラー」は、JavaScriptの書き方のルール(文法)を間違えている状態です。料理でいうと「レシピの日本語が読み取れない」ようなもので、実行する前の段階でブラウザが「意味がわかりません!」と処理を止めてしまいます。


// カッコを閉じ忘れるなど、書き方がおかしい例
console.log("こんにちは"

Uncaught SyntaxError: missing ) after argument list
(訳:カッコを閉じ忘れていますよ!)

1-2. 例外(Exception):実行中に予想外のことが起きた時

「例外」は、書き方は合っているけれど、動かしてみたら問題が発生した状態です。料理でいうと「レシピ通りに『卵を割る』という工程に進んだけど、冷蔵庫に卵がなかった」というケースです。プログラムの文法自体は正しいので動こうとしますが、途中で「これ以上進めない!」と止まってしまいます。


// 定義されていない(存在しない)変数を使おうとした例
let total = 100 + applePrice;

Uncaught ReferenceError: applePrice is not defined
(訳:applePriceという変数はどこにも見当たりません!)

どちらも「プログラムが止まる」という結果は同じですが、「書いた瞬間にダメなのがエラー」「動かしてみて困るのが例外」と覚えておくと、この後のデバッグ(修正作業)がぐっとスムーズになります。まずはこの2つを恐れず、解決のヒントとして活用していきましょう。

2. よくある構文エラー(SyntaxError)

2. よくある構文エラー(SyntaxError)
2. よくある構文エラー(SyntaxError)

SyntaxError(シンタックスエラー)とは、プログラムの「文法」が間違っている際に出るエラーです。人間でいう「てにをは」の間違いや、綴りミスのようなものだと考えてください。JavaScriptのルールに沿っていない記述があると、ブラウザがコードを読み取れずに停止してしまいます。

代表的なエラーの例:閉じカッコの忘れ

初心者が最も陥りやすいのが、カッコ () や波カッコ {} の閉じ忘れです。例えば、以下のコードを見てみましょう。


console.log("こんにちは";
// 本来は console.log("こんにちは"); と書くべき

この場合、デベロッパーツールのコンソールには、以下のようなエラーメッセージが表示されます。


Uncaught SyntaxError: missing ) after argument list
(引数リストの後に ) がありません)

SyntaxErrorを解決するコツ

構文エラーが発生したときは、「エラーメッセージの行番号」を真っ先に確認しましょう。ブラウザは「ここがおかしいよ!」と親切に教えてくれます。 また、セミコロン(;)の付け忘れや、全角スペースが混じっているだけでもこのエラーは発生します。エラーが出たら、まずは「綴り」と「記号のペア」が正しいか、落ち着いて見直すのが解決への近道です。

3. 参照エラー(ReferenceError)

3. 参照エラー(ReferenceError)
3. 参照エラー(ReferenceError)

ReferenceError(リファレンスエラー)は、「存在しない変数や関数を使ったとき」に出ます。たとえば、


console.log(name);

ここで name を定義していないと「ReferenceError: name is not defined」というエラーになります。

対処法は、変数や関数を使う前に let name = ...; のように定義することです。

4. 型エラー(TypeError)

4. 型エラー(TypeError)
4. 型エラー(TypeError)

TypeError(タイプエラー)は、「間違った種類(型)の値で操作しようとしたとき」に出ます。たとえば、


let num = 123;
num.toUpperCase();

ここでは、数字(Number型)に文字列だけが持つ toUpperCase() を使っているので、「TypeError: num.toUpperCase is not a function」となります。

対処法は、メソッドを使う値の型が正しいか確認することです。

5. 範囲エラー(RangeError)

5. 範囲エラー(RangeError)
5. 範囲エラー(RangeError)

RangeError(レンジエラー)は、数字の範囲が合わないときに出ます。例えば、


let arr = new Array(-1);

この場合「RangeError: Invalid array length(無効な配列の長さ)」と表示されます。

対処法は、引数や数値が正しい範囲になっているか確認しましょう。

6. 例外処理 try...catch の使い方

6. 例外処理 try...catch の使い方
6. 例外処理 try...catch の使い方

実行中に例外が起きてもプログラムを止めずに続けたいときは、try...catchを使います。これは、「安全に処理を試して、失敗したらカバーする」仕組みです。


try {
  JSON.parse("不正なJSON");
} catch (e) {
  console.log("エラーが起きました:", e.message);
}

このように書くと、JSON の変換に失敗しても「エラーが起きました: ...」と表示して安全に処理できます。

7. よく出会う例外と対処まとめ

7. よく出会う例外と対処まとめ
7. よく出会う例外と対処まとめ
  • SyntaxError → 書き方の間違い、行番号を確認し修正
  • ReferenceError → 宣言していない変数、定義漏れを確認
  • TypeError → 型とメソッドの組み合わせをチェック
  • RangeError → 数値や範囲が正しい値か確認
  • 例外全般try...catchで安全に処理

8. デバッグのコツ:エラーメッセージを読み解く

8. デバッグのコツ:エラーメッセージを読み解く
8. デバッグのコツ:エラーメッセージを読み解く

エラー画面には「TypeError: ●● is not a function at ファイル名:行番号:列番号」が表示されます。何が、どこで、どう間違ったのかを教えてくれているので、まずはここを見ましょう。

一度に全部直そうとせず、ひとつずつ丁寧に修正することが初心者にとって有効です。

9. エラーと例外は成長のチャンス

9. エラーと例外は成長のチャンス
9. エラーと例外は成長のチャンス

初心者がプログラミングで出会うエラーや例外は、学びのチャンスです。失敗したときに落ち着いて対応できるスキルが身についていきます。

「エラーが出たらチャンス」と前向きにとらえて、一つ一つ解決していきましょう。

まとめ

まとめ
まとめ

ここまでJavaScriptにおけるエラーと例外の基礎知識から、具体的な種類、そして万が一のトラブルを回避するための対処法について詳しく解説してきました。プログラミングの学習を始めたばかりの頃は、コンソールに表示される赤い文字(エラーメッセージ)を見るだけで「何かとんでもない失敗をしてしまったのではないか」と不安に感じるかもしれません。しかし、今回学んだように、エラーは決して敵ではありません。むしろ、プログラムが「ここが動かないよ」「書き方が違うよ」と親切に教えてくれている道標のようなものです。

主要なエラーの振り返りと対策

JavaScriptで頻出するエラーを理解しておくことは、開発スピードを劇的に向上させます。もう一度、重要なポイントをおさらいしておきましょう。

  • SyntaxError(構文エラー): 綴り間違いや括弧の閉じ忘れなど、文法のミスです。エディタのハイライト機能を活用して、書いている最中に気づけるようにしましょう。
  • ReferenceError(参照エラー): 定義されていない変数にアクセスした際に発生します。変数のスコープ(有効範囲)や、宣言のタイミングを再確認してください。
  • TypeError(型エラー): 数値型に対して文字列用のメソッドを呼び出すなど、データの種類を間違えたときに起こります。typeof演算子などを使って、データの型を確認する癖をつけると良いでしょう。
  • RangeError(範囲エラー): 数値が許容範囲を超えたときに出るエラーです。配列の要素数や再帰処理の深さなどに注意が必要です。

実践的な例外処理の活用

実際のアプリケーション開発では、ユーザーの入力内容や外部APIとの通信など、自分たちではコントロールできない要因でエラーが発生することがあります。そういった場合にプログラムを完全に停止させない手法が、try...catch構文です。

例えば、外部から取得したデータが正しい形式かどうか確信が持てない場合、以下のように記述することで、たとえデータが壊れていてもシステム全体のクラッシュを防ぐことができます。


function safeJsonParse(jsonString) {
    try {
        // 成功する可能性のある処理をここに記述
        const data = JSON.parse(jsonString);
        console.log("データの解析に成功しました:", data);
        return data;
    } catch (error) {
        // エラーが発生したときのリカバリー処理
        console.error("解析エラーが発生しました。デフォルト値を使用します。");
        console.error("エラーの内容:", error.message);
        return {};
    } finally {
        // 成功・失敗に関わらず最後に必ず実行したい処理
        console.log("解析処理を終了します。");
    }
}

// 実行例1: 正しい形式
safeJsonParse('{"name": "太郎"}');

// 実行例2: 不正な形式
safeJsonParse("不正なデータ形式です");

上記のコードを実行した結果、コンソールには以下のように表示されます。


データの解析に成功しました: { name: '太郎' }
解析処理を終了します。
解析エラーが発生しました。デフォルト値を使用します。
エラーの内容: Unexpected token '不', "不正なデータ形式です" is not valid JSON
解析処理を終了します。

デバッグ効率を高めるために

エラーを解決するプロセスを「デバッグ」と呼びますが、これにはコツがあります。それは「仮説を立てること」です。 「この変数の値が空だからTypeErrorが出ているのではないか?」といった予測を立て、console.log()を使って実際に中身を確認してみる。この繰り返しが、プログラミングスキルを磨く最短ルートになります。 また、TypeScript(タイプスクリプト)という言語を併用することで、実行前に多くのエラーを未然に防ぐことが可能になります。


// TypeScriptでの例:型を指定することでミスを防ぐ
function greet(name: string): string {
    return "こんにちは、" + name + "さん!";
}

// 数値を渡すと、実行する前にエディタがエラーとして教えてくれる
// greet(12345); // Argument of type 'number' is not assignable to parameter of type 'string'.

最後に

エラーメッセージを読み解く力は、エンジニアとしての基礎体力です。最初は英語のメッセージに戸惑うかもしれませんが、よく出るフレーズは決まっています。 わからない単語があれば検索し、一つひとつ自分の知識として蓄積していきましょう。 「エラーが出た!ラッキー!」と思えるようになれば、あなたはもう初心者脱出の第一歩を踏み出しています。焦らず、自分のペースでコードを書き続けてくださいね。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!エラーって、ただプログラムが動かないっていう印じゃなくて、原因を教えてくれる大切なヒントだったんですね。今まで赤い文字が出るたびにガッカリしていましたが、少し気持ちが楽になりました。」

先生

「その通りです!ベテランのエンジニアでも、毎日たくさんのエラーを出していますよ。大事なのは、エラーを出さないことではなく、出たときに『何が起きているのか』を冷静に読み解く力なんです。」

生徒

「記事の中で紹介されていたtry...catchを使えば、もしエラーが起きてもホームページが真っ白になったり、アプリが急に落ちたりするのを防げるんですね。これって、ユーザーにとってもすごく親切な作りになりますよね?」

先生

「素晴らしい気づきですね。専門用語で『堅牢性(けんろうせい)』と言ったりしますが、予期せぬ事態にも対応できるプログラムを書くことは、プロの仕事として非常に重要です。でも、初心者のうちは、まずはエラーメッセージをGoogleで検索して、どうやって直すのかを調べるだけでも十分な学習になりますよ。」

生徒

「はい!まずは英語のエラーメッセージを恐れずに読んでみます。特にReferenceErrorはよくやってしまうので、変数の名前を打ち間違えていないか、定義する場所が間違っていないか、しっかり確認するようにしますね。」

先生

「いいですね。ちなみに、変数の名前をキャメルケース(例:userName)で書くなどのルールを自分の中で決めておくと、打ち間違いを減らせるのでおすすめですよ。TypeScriptについても少し触れましたが、慣れてきたらぜひ挑戦してみてください。型を意識することで、驚くほどミスが減りますから。」

生徒

「TypeScriptですね、覚えておきます!これからはエラーが出るたびに『よし、また一つ賢くなれるぞ!』と前向きにデバッグに取り組んでいこうと思います。今日は本当に勉強になりました!」

先生

「その意気です!エラーを乗り越えた数だけ、確実にあなたのプログラミングスキルは向上しています。もしどうしても解決できないエラーに出会ったら、またいつでも相談してくださいね。頑張りましょう!」

関連記事:
カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptの条件式で論理演算子(&&, ||, !)を活用する方法!初心者でもわかる使い方ガイド
New2
TypeScript
TypeScriptでエラー処理を共通関数化して効率的に開発しよう!初心者向け例外処理ガイド
New3
JavaScript
JavaScriptの条件式における比較演算子の使い方まとめ!初心者でもわかる基本ルールと活用法
New4
JavaScript
JavaScriptのswitch文の基本構文と使いどころを学ぼう!初心者でもわかる条件分岐の書き方
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptで統一感のあるコードを書くための基本ルール完全ガイド初心者向けコーディング規約入門
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptのonclick・onchangeなどの基本イベントを理解しよう
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptのnever型を使ったエラーハンドリング!例外処理を極める安全なコードの書き方
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptでクエリパラメータを取得する方法を完全解説 URLSearchParamsの使い方を初心者向けに丁寧に説明