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