try-catch メソッドはもともと catch ステートメントで使用され、Error オブジェクトを受け取ります (カスタム例外オブジェクトをスローすることもできます)。 Firefox の Error オブジェクトには次のプロパティがあります。
message - エラー メッセージ
fileName - エラー コードが存在するファイルを示します
lineNumber - エラー コードの行数
stack - エラー スタック情報
name - 例外オブジェクトの名前/タイプ
ただし、IE では、Error オブジェクトには次の属性のみがあります:
name - 例外オブジェクトの名前/タイプ。これは異なる場合があります。 Firefox で表示される名前から
message - エラーメッセージ
description - メッセージ属性と同じ
number - ErrorCode、エラーコード、一般の開発者にとっては基本的に意味がありません
つまり、エラー コードのファイル名とエラー行数に関する最も必要な情報。その後、学校のフォーラムでアドバイスを求めたところ、ウィンドウの下に onerror オブジェクト (グローバル オブジェクト) があることを知りました。このオブジェクトまたはウィンドウのプロパティは、エラー処理関数にバインドされています。スクリプト内で捕捉されなかったエラーは、最終的にウィンドウ層に伝播され、onerror-bound ハンドラーによって処理されます。関連するドキュメントを確認したところ、バインドされたエラー処理関数が 3 つのパラメータを受け取ることがわかりました:
view sourceprint?function onError(message,url,line){}
このメカニズムは IE および Firefox と互換性があります。
例を示します:
function doSomething(){
var lastErrorHandler = window.onerror;
window.onerror = function(message,url,line){
// エラーを報告
alert("" url " を実行)ファイル コードの " line " 行でエラーが発生しました。エラー メッセージ: " message);
window.onerror = lastErrorHandler;
// このエラーが拡散し続けることを望まない
return true ;
};
/ / エラーが発生しました...
window.onerror =
}
ここでattachEventを使用しない理由は、detachの方が不便だからです。このエラー処理をグローバルにしたい場合は、attachEvent (Firefox では addEventListener) を使用できます。
Safari (Chrome は同じカーネルを使用します) も Opera もこのメカニズムをサポートしていないことに注意してください。そのため、このメソッドは例外情報を取得するために使用できません。 try-catch のみを使用できます。
実験後、Safari の Error オブジェクトには次の属性があります。
message - エラー メッセージ
line - エラー コードが存在する行数
sourceId - 1
sourceURL - エラー コードが存在するファイルを示します。
Opera の Error オブジェクトには次の属性があります。
メッセージ - プロンプト情報
opera#sourceloc - エラー コードの行番号
stacktrace - エラー スタック情報
これら 2 つのブラウザのエラー オブジェクトは、十分な情報を提供します。デバッグに使用します。次に行う必要があるのは、これら 2 つの方法を組み合わせて、これらのエラーがさまざまなブラウザーで適切に報告されるようにすることです。
次のコードは、さまざまなブラウザーで例外を報告する機能をカプセル化しています: