JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのthrowステートメントとは?例外を発生させる方法とtry-catchとの組み合わせを解説

JavaScriptのthrowステートメントは、組み込みの例外や独自に定義したカスタム例外を意図的に発生させるために使用します。発生させた例外は、後からcatchブロックで捕捉(キャッチ)することができ、エラーに応じた適切な処理を実行できます。

throwステートメントの基本的な役割

プログラムの実行中に予期しない状況(ゼロ除算、無効な入力値など)が発生した場合、そのまま処理を続けると深刻なバグにつながる可能性があります。throwを使うことで、問題を検出した時点で処理を中断し、エラー情報を呼び出し元に通知できます。

throwで投げることができるのは文字列だけでなく、数値、真偽値、オブジェクトなど任意の値です。一般的には、エラーメッセージを持つErrorオブジェクトを使用するのが推奨されています。

実装例

以下のコードは、ゼロ除算が発生する可能性がある場面でthrowステートメントを使い、例外を捕捉してアラートで表示する例です。

<html>
   <head>
      <script>
         <!--
            function myFunc()
            {
               var a = 100;
               var b = 0;
               try{
                  if ( b == 0 ){
                     throw( "Divide by zero error." );
                  } else {
                     var c = a / b;
                  }
               }
               catch ( e ) {
                  alert("Error: " + e );
               }
            }
         //-->
      </script>
   </head>

   <body>
      <p>Click the following to see the result:</p>
      <form>
         <input type = "button" value = "Click Me" onclick = "myFunc();" />
      </form>
   </body>
</html>

コードの解説

  • 変数b0の場合、ゼロ除算になるためthrowで「Divide by zero error.」というメッセージを例外として投げます。
  • throwが実行されると、それ以降のtryブロック内の処理はスキップされ、直ちにcatchブロックへ制御が移ります。
  • catch ( e )で受け取った例外の内容をalert()で表示し、ユーザーにエラーを通知します。
  • 変数b0以外であれば、通常どおり割り算が実行され、例外は発生しません。

このようにthrowtry...catchを組み合わせることで、エラーが発生してもプログラム全体がクラッシュすることなく、安全に処理を継続または終了させることができます。ボタンをクリックすると、この動作を実際に確認できます。

  1. JavaScriptのparseInt()メソッドとは?文字列を整数に変換する使い方を解説

    JavaScriptのparseInt()メソッドは、文字列を解析(パース)して整数を返すための関数です。数値に変換できる部分だけを読み取り、整数値として結果を返します。 さらに、第2引数として基数(記数法)を指定することもできます。たとえば「16」を指定すると、文字列を16進数として解釈します。 parseInt()メソッドの主な特徴 文字列の先頭から解析し、最初に現れた数値以外の文字の手前までを整数として返します。 小数点以下は切り捨てられます(例:20.50 → 20)。 先頭が数値として解釈できない場合、NaN(Not a Number)を返します。 第2引数の基数を指定することで、

  2. JavaScriptのwithステートメントとは?用途と使い方をわかりやすく解説

    JavaScriptのwithステートメントは、特定のプロパティに対してデフォルトのオブジェクトを指定し、冗長になりがちなオブジェクト参照の記述を省略するための構文です。withブロック内で指定したオブジェクトは、スコープチェーンの先頭に追加されるため、そのプロパティ名だけで直接アクセスできるようになります。 基本的な動作 通常、オブジェクトのプロパティにアクセスするには、毎回オブジェクト名を明示する必要があります。しかし、withステートメントを使えば、以下のようにコードを簡潔に書けます。 オブジェクト名の繰り返し記述を省略できる 同じオブジェクトの複数のプロパティへ短くアクセスできる 指