例外の捕捉と処理 | try…catch構文 | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
~
ad. 価格範囲を指定して商品を探せます

例外の捕捉と処理とは?

JavaScriptでは、プログラムの実行中に予期しないエラーが発生することがあります。このようなエラーを例外(Exception)と呼びます。

例外を適切に処理しないと、その時点でプログラムの実行が停止してしまう場合があります。そこで利用するのがtry...catch構文です。

try...catchを使うことで、エラーが発生してもプログラムを安全に継続させたり、ユーザーへ分かりやすいメッセージを表示したりできます。

try...catch構文の基本

tryブロックにはエラーが発生する可能性のある処理を書きます。エラーが発生した場合は、catchブロックが実行されます。

基本構文

try {
    // エラーが発生する可能性のある処理
} catch (error) {
    // エラー発生時の処理
}

エラーが発生しなければ、catchは実行されません。

例外処理の流れ

段階 内容
① tryブロックの処理を実行する。
② エラーがなければ、そのまま次の処理へ進む。
③ エラーが発生すると、残りのtryは中断される。
④ catchブロックでエラー内容を受け取り処理する。

基本的な例外処理

存在しない関数を呼び出した例です。

try {
    nonExistentFunction();
} catch (error) {
    console.error("エラーが発生しました:", error.message);
}

このコードでは、存在しない関数を呼び出すためReferenceErrorが発生します。

catchブロックがそのエラーを受け取り、エラーメッセージを表示します。

コードの流れ

  1. nonExistentFunction()を実行する。
  2. ReferenceErrorが発生する。
  3. catchへ処理が移る。
  4. error.messageの内容を表示する。

finallyを使った後処理

finallyブロックは、エラーの有無に関係なく必ず実行されます。

try {
    console.log("処理を開始します");
} catch (error) {
    console.error(error.message);
} finally {
    console.log("必ず実行されます");
}

ファイルを閉じる処理や通信終了後の後始末などによく利用されます。

throwで独自の例外を発生させる

必要に応じて、自分で例外を発生させることもできます。

function divide(a, b) {
    if (b === 0) {
        throw new Error("0では割り算できません。");
    }

    return a / b;
}

try {
    console.log(divide(10, 0));
} catch (error) {
    console.error(error.message);
}

throwを使うことで、条件に応じた独自のエラーを発生させることができます。

Errorオブジェクトの主なプロパティ

catchで受け取るエラーには様々な情報が含まれています。

プロパティ 内容
message エラー内容を表すメッセージ。
name エラーの種類(ReferenceErrorなど)。
stack エラー発生箇所の呼び出し履歴(環境によって利用可能)。

エラーハンドリングのベストプラクティス

  • 必要な範囲だけをtryで囲む:大きすぎるtryブロックは原因を特定しにくくなります。
  • ユーザー向けと開発者向けの情報を分ける:画面には分かりやすいメッセージを表示し、詳細はログへ残します。
  • throwを活用する:異常な状態では独自の例外を発生させると保守しやすくなります。
  • finallyを利用する:後片付けが必要な処理はfinallyへ記述します。
  • 例外を無視しない:空のcatchブロックは原因調査が難しくなるため避けましょう。

初心者が知っておきたいポイント

  • try...catchは実行時エラーを処理するための仕組みです。
  • 構文エラー(SyntaxError)はプログラムの実行前に発生するため、通常はtry...catchでは捕捉できません。
  • 必要以上にすべての処理をtryで囲まないようにしましょう。
  • エラー内容を確認するにはerror.messageやerror.nameが便利です。

まとめ

  • try...catchを使うと例外を捕捉して処理できる。
  • finallyはエラーの有無に関係なく必ず実行される。
  • throwを使えば独自の例外を発生させられる。
  • Errorオブジェクトからエラー内容を取得できる。
  • 適切な例外処理を行うことで、安全で保守しやすいプログラムになる。