JavaScript異常処理
4510 ワード
プログラム異常
プログラムの異常は論理異常と文法異常に分けられます.初心者には文法が異常に多いです.絶えず勉強するにつれて言語に慣れてきて、文法が異常に少なくなります.
ただし、異常処理を濫用しないように注意すると、プログラムの可読性が悪くなります.
異常オブジェクト
すべての異常は対象です.
異常タイプ
異常タイプ
簡単に述べる
エロエロ
EveralError
このエラーは
RangeError
数値が範囲を超えています.
ReferenceErrer
変数が見つかりません
SyntaxError
構文エラー
Type Error
タイプエラー
URIER or
異常捕獲
try catch
throw
いくつかの場合、私たちは自発的に異常を投げ出す必要があります.
特定のタイプの表現ではなく、任意の表現を投げられます.下記のコードはいくつかの異なるタイプの表現を投げました.
関数形式
プログラムの異常は論理異常と文法異常に分けられます.初心者には文法が異常に多いです.絶えず勉強するにつれて言語に慣れてきて、文法が異常に少なくなります.
JavaScript
には異常を処理するためのステートメントが提供されており、適切なときにそれらを使用すると、プログラムがよりロバストになる.ただし、異常処理を濫用しないように注意すると、プログラムの可読性が悪くなります.
異常オブジェクト
すべての異常は対象です.
異常タイプ
JavaScript
では、一般的な異常タイプは以下のような種類がある.異常タイプ
簡単に述べる
エロエロ
Error
は最も基本的なエラータイプであり、他のタイプはこのタイプから継承されている.したがって、 。
のこのタイプのエラーは珍しい.一般的に開発者がカスタマイズして投げたエラーEveralError
このエラーは
eval()
関数を使って異常が発生した時に投げ出します.2つの場合はエラーが発生します.1.new
を使用して実装します.2.変数名をeval
として試みます.キーワードですので、これは許可されていません.RangeError
数値が範囲を超えています.
Array
操作でよく見られます.ReferenceErrer
変数が見つかりません
SyntaxError
構文エラー
Type Error
タイプエラー
URIER or
encodeURI
またはdecodeURI
を使用すると、URLフォーマットが正しくないため、URIErrorエラーが発生する.異常捕獲
try catch
try
を使用してcatch
文と捕獲異常を行う.try
は、異常が発生する可能性のあるコードブロックを検出するために使用される. catch
は、キャプチャされた異常を処理するために、パラメータを指定して異常情報を取得することができる.try...catch
文には、1つまたは複数のステートメントを含むtry
コードブロック、0つまたは1つのcatch
コードブロックがあり、catch
コードブロックのステートメントは、try
コードブロックに異常があるときに実行されます.try
コードブロック内のステートメント(またはtry
コードブロック内で呼び出された方法)が例外をスローした場合、実行フローは直ちにcatch
コードブロックに入ります.try
コードブロックに異常がない場合、catch
コードブロックはスキップされます.
"use strict";
try {
console.log(username);
} catch (e) { //
console.log(" :", e);
}
/*
: ReferenceError: username is not defined
at 1.html:56
*/
finallyfinally
ブロックは、try
およびcatch
ブロックが完了した後に、try...catch
に続くステートメントの前に実行されるステートメントを含む.finally
ブロックは、例外があるかどうかにかかわらず実行される.異常が発生したら、異常処理がなくても、finally
ブロックのステートメントが実行されます.
"use strict";
try {
console.log(username);
} catch (e) { //
console.log(" ,ID:", e);
} finally {
console.log(" ");
}
主動異常throw
いくつかの場合、私たちは自発的に異常を投げ出す必要があります.
throw
文を使って異常を投げます.
"use strict";
throw new Error(" ")
式の形式特定のタイプの表現ではなく、任意の表現を投げられます.下記のコードはいくつかの異なるタイプの表現を投げました.
"use strict";
throw "Error2"; // String type
throw 42; // Number type
throw true; // Boolean type
throw { toString: function () { return "I'm an object!"; } };
カスタム異常Error
プロトタイプのオブジェクトを継承し、カスタムの異常を設定することができます. Error
構築関数は、人類が読むことができるエラー記述情報を表示するためのmessage
オプションのパラメータを有する.関数形式
"use strict";
function MyError(message) {
this.name = 'MyError';
this.message = message || 'Default Message';
this.stack = (new Error()).stack;
}
Object.setPrototypeOf(MyError, Error); // Error
try {
throw new MyError();
} catch (e) {
console.log(e.name); // MyError
console.log(e.message); // Default Message
}
try {
throw new MyError(" ");
} catch (e) {
console.log(e.name); // MyError
console.log(e.message); //
}
クラス形式
"use strict";
class MyError extends Error {
constructor(message) {
super();
this.name = "MyError";
this.message = message || 'Default Message';
this.stack = (new Error()).stack;
}
}
try {
throw new MyError();
} catch (e) {
console.log(e.name); // MyError
console.log(e.message); // Default Message
}
try {
throw new MyError(" ");
} catch (e) {
console.log(e.name); // MyError
console.log(e.message); //
}