JavaScript

【JavaScript】例外処理とは?try…catch…finally文・throw文

takahide

おはようございます。タカヒデです。

本日は、「JavaScriptにおける、『例外処理』及び、『try…catch…finally文』『throw文』」を紹介します。

こんな人にオススメ
  • JavaScriptにおける『例外処理』が理解できない
  • 『try…catch…finally文』『throw文』の記載方法を知りたい

ぜひ本記事を参考にしてください。

例外・例外処理とは?

そもそも、例外・例外処理とは何のことでしょうか?

  • 例外
    • 開発時に想定しなかったエラーのこと
  • 例外処理
    • 例外が発生した際に、コード全体が停止しないように適切なエラー画面を表示すること。

これらのことを指します。

うーん、よくわかりませんね。

少し具体例を見ていきましょう。
例外には以下のようなものがあります。

  • 電話番号の入力フォームに文字が入力された
  • 注文画面の必須項目を入力しないで送信しようとした
  • 変数を参照しようとしたら定義されていなかった

このような、普段は行わない操作を「例外」と言います。
発生する可能性のある例外に備えて、あらかじめ「例外処理」を実装しておくことでコード全体が止まらないようにする必要があります。

例外処理の実装(try…catch…finally文)

実際に『例外処理を実装』する場合には、『try…catch…finally文』を使用します。

『try…catch…finally文』の記載方法は以下の通りです。

// try...catch...finally文の記載方法

try{
  例外が発生するかもしれない命令
}catch(例外情報を受け取る変数){
  例外が発生した際に実行する命令
}finally{
  例外の有無にかかわらず実行される命令
}

『finally』は必ずしも記載する必要はなく、『try…catch』のみでも問題ありません。

例外が発生しない場合は、『catch』をスキップし、『try』⇒『finally』の順で実行されます。

例外が発生した場合には、『try』でコードが停止することなく、『catch』⇒『finally』の順で実行されます。

実際の記載例を見て、「例外処理を記載しなかった場合」と「例外処理を記載した場合」を比べてみましょう。

■例外処理を記載しなかった場合

let i = 1;
i = i + j;

//実行結果:Uncaught ReferenceError: j is not defined

■例外処理を記載した場合

let i = 1;

try {
  i = i + j;
} catch (e) {
  console.log(e.name + ":" + e.message);
} finally {
  console.log("処理完了");
}

//実行結果:ReferenceError:j is not defined
//実行結果:処理完了

例外処理を記載しなかった場合は、エラーでコード全体が停止されます。
一方、例外処理を記載した場合は、エラーをスキップし、『catch』『finally』の処理を実行していることが分かります。

自分で例外を発生させる(throw文)

『システム上で例外が発生した箇所ではなく、意図した箇所で例外を発生させる』場合には、『throw文』を使用します。

// throw文の記載方法

try{
  throw new Error(エラーメッセージ)
}catch(例外情報を受け取る変数){
  例外が発生した際に実行する命令
}

上記記載方法のtry内にある『throw new Error(エラーメッセージ)』が該当します。

以下は記載例です。

let x = 1;
let y = 0;

try {
  if (y === 0) {
    throw new Error("0はNG");
  }
  let z = x / y;
  console.log(z);
} catch (e) {
  console.log(e.message);
}

//実行結果:0はNG

本来、JavaScriptにおいて、1÷0を実行した場合「Infinity」となります。

しかし、ここではthrowによる例外を発生させているため、Errorオブジェクトを生成し、catchの処理に移行しているため、「Infinity」にはならないのです。

これが『throw文』の処理でした。

まとめ

以上が「JavaScriptにおける、『例外処理』及び、『try…catch…finally文』『throw文』」の紹介でした。

まとめ
  • 例外とは、開発時に想定しなかったエラーのこと
  • 例外処理とは、例外が発生した際に、コード全体が停止しないように適切なエラー画面を表示すること
  • 例外処理においては、『try…catch…finally文』『throw文』を使用する

この記事が誰かの参考になれば幸いです。

お疲れさまでした。

ABOUT ME
タカヒデ
タカヒデ
ITを楽しく勉強中
通信会社の企画職で働く30代 非エンジニアでありながら半分趣味でITエンジニアリングやプログラミングを学習中 IT初心者が楽しいと思えるように発信することを目指しています ↓Xもやっているのでフォローしてね
記事URLをコピーしました