🌶️

try/catch文をざっくり、そしてシンプルに解説

2022/02/24に公開

try/catch文とは

JavaScriptは皆さん御存知の通り、関数などの実行に失敗するとその行以降が実行されません。
ですが、処理に成功したか失敗したかに応じて処理を分けたい場合があります。

その時に書くのがtry/catch文です。これは例外処理とも呼ばれます。
いわば「処理に失敗した時も想定する構文」です。

基本的なコード例

実際に見てみましょう。
実務ではAPIの処理にtry/catch文を使うことが多いですが、今回はわかりやすくconsole.log()で。

try {
  // まず実行される処理
  console.log('try');
} catch (error) {
  // tryブロックで失敗したら実行される
  console.log('catch');
} finally {
  // tryブロックで成功しても失敗しても実行される
  console.log('finally');
}

// 出力結果
// "try"
// "finally"

console.log()は基本的に処理に失敗しないので、この場合はtryとfinallyのみが実行されます。

エラーメッセージを受け取る

try {
  consol.log('try'); // console.logのタイプミスした場合
} catch (error) {
  console.log('catch');
  console.log(error.message);
} finally {
  console.log('finally');
}

// 出力結果
// "catch"
// "consol is not defined"
// "finally"

処理に失敗した場合、その時点でcatch節に入ります。
上記のコード例のようにcatch節ではerrorオブジェクトを引数に取るので、エラーの内容を参照することも可能です。(もちろん引数名は任意のものに変更可能です。)
今回はconsole.logconsol.logとタイプミスしたので、その旨のエラーメッセージが出力されます。

throw文

処理が失敗したとかじゃなく、自分でエラーを投げることができます。throw = 投げる。

const yourAge = 'Haruki'; // 年齢が入るはずなのに名前が入っている例
try {
  // yourAgeが数字じゃない場合はエラーを投げる
  if(typeof(yourAge) !== 'number') {
    throw new Error('yourAge is not a Number');
  }
  console.log('try'); // エラーを投げた以降の文は実行されない
} catch (error) {
  // console.log('catch');
  // try節で投げられたエラーを出力する
  console.log(error.message);
} finally {
  console.log('finally');
}

// 出力結果
// "catch"
// "yourAge is not a Number"
// "finally"

投げたエラーはcatch節でのみアクセスでき、出力することができます。(try節やfinally節ではアクセスできないのでご注意ください。)

まとめ

try/catch文を実務で使うのは非常にカンタンなのですが、調べた時に難しい書き方をしているサイトが多かったのでシンプルに最小構成で解説してみました。
try/catch文の入れ子など、もっと詳しく知りたい方は以下のサイトをご参照ください。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/try...catch

Discussion