ES6-エラー処理

プログラミングのエラーには、構文エラー、ランタイムエラー、論理エラーの3種類があります。

構文エラー

構文エラー、別名 parsing errors、従来のプログラミング言語ではコンパイル時に、JavaScriptでは解釈時に発生します。JavaScriptで構文エラーが発生すると、構文エラーと同じスレッドに含まれるコードのみが影響を受け、他のスレッドの残りのコードは、エラーを含むコードに依存しないと想定して実行されます。

ランタイムエラー

ランタイムエラー、別名 exceptions、実行中(コンパイル/解釈後)に発生します。例外は、それらが発生するスレッドにも影響を及ぼし、他のJavaScriptスレッドが通常の実行を継続できるようにします。

論理エラー

論理エラーは、追跡するのが最も難しいタイプのエラーである可能性があります。これらのエラーは、構文エラーまたは実行時エラーの結果ではありません。代わりに、スクリプトを駆動するロジックに誤りがあり、期待どおりの結果が得られない場合に発生します。

これらのエラーは、ビジネス要件、プログラムに配置するロジックのタイプによって異なるため、キャッチできません。

JavaScriptは、ランタイムエラーが発生すると、Errorオブジェクトのインスタンスをスローします。次の表に、Errorオブジェクトの事前定義されたタイプを示します。

シニア番号 エラーオブジェクトと説明
1

EvalError

グローバル関数に関して発生するエラーを表すインスタンスを作成します eval()

2

RangeError

数値変数またはパラメーターが有効範囲外の場合に発生するエラーを表すインスタンスを作成します。

3

ReferenceError

無効な参照を逆参照するときに発生するエラーを表すインスタンスを作成します。

4

SyntaxError

コードの解析中に発生する構文エラーを表すインスタンスを作成します。

5

TypeError

変数またはパラメーターが有効なタイプでない場合に発生するエラーを表すインスタンスを作成します。

6

URIError

次の場合に発生するエラーを表すインスタンスを作成します encodeURI() または decodeURI() 無効なパラメータが渡されます。

例外のスロー

エラー(事前定義またはユーザー定義)は、 throw statement。後でこれらの例外をキャプチャして、適切なアクションを実行できます。以下はその構文です。

構文:一般的な例外をスローする

throw new Error([message]) 
OR 
throw([message])

構文:特定の例外をスローする

throw new Error_name([message])

例外処理

例外処理は、 try...catch statement。プログラムで例外が発生すると、プログラムは不適切な方法で終了します。この予期しないエラーから保護するために、コードをtry ... catchステートメントでラップできます。

tryブロックの後には、正確に1つのcatchブロックまたは1つのfinallyブロック(または両方のいずれか)が続く必要があります。tryブロックで例外が発生すると、例外がeに配置され、catchブロックが実行されます。オプションのfinallyブロックは、try / catchの後に無条件に実行されます

以下はその構文です。

try {  
   // Code to run  
   [break;]  
} catch ( e ) {  
   // Code to run if an exception occurs
   [break;]  
}[ finally {  
   // Code that is always executed regardless of  
   // an exception occurring  
}]

var a = 100; 
var b = 0; 
try { 
   if (b == 0 ) { 
      throw(“Divide by zero error.”); 
   } else { 
      var c = a / b; 
   } 
} 
catch( e ) { 
   console.log("Error: " + e ); 
}

出力

上記のコードが正常に実行されると、次の出力が表示されます。

Error: Divide by zero error

Note −注:1つの関数で例外を発生させてから、同じ関数または呼び出し元の関数で、を使用してその例外をキャプチャできます。 try...catch ブロック。

onerror()メソッド

ザ・ onerrorイベントハンドラーは、JavaScriptでのエラー処理を容易にする最初の機能でした。エラーイベントは、ページで例外が発生するたびにウィンドウオブジェクトで発生します。

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function () {  
            document.write ("An error occurred.");  
         } 
      </script> 
   </head> 

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

出力

上記のコードが正常に実行されると、次の出力が表示されます。

onerrorイベントハンドラーは、エラーの正確な性質を識別するための3つの情報を提供します-

  • Error message −特定のエラーに対してブラウザが表示するのと同じメッセージ。

  • URL −エラーが発生したファイル。

  • Line number −エラーの原因となった特定のURLの行番号。

次の例は、この情報を抽出する方法を示しています。

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function (msg, url, line) {  
            document.write ("Message : " + msg );  
            document.write ("url : " + url );  
            document.write ("Line number : " + line );  
         } 
      </script> 
   </head> 

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

カスタムエラー

JavaScriptは、カスタムエラーの概念をサポートしています。次の例は同じことを説明しています。

例1:デフォルトメッセージのカスタムエラー

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Error raised with default message'; 
} 
try { 
   throw new MyError(); 
} catch (e) {  
   console.log(e.name);      
   console.log(e.message);  // 'Default Message' 
}

上記のコードが正常に実行されると、次の出力が表示されます。

CustomError 
Error raised with default message

例2:ユーザー定義のエラーメッセージを含むカスタムエラー

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Default Error Message';  
} try { 
   throw new MyError('Printing Custom Error message'); 
} 
catch (e) { 
   console.log(e.name);      
   console.log(e.message);  
}

上記のコードが正常に実行されると、次の出力が表示されます。

CustomError 
Printing Custom Error message