Javascript_javascriptスキルのエラーコードのファイルと行番号を取得するコード

WBOY
リリース: 2016-05-16 18:19:19
オリジナル
1212 人が閲覧しました

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) を使用できます。 Javascript_javascriptスキルのエラーコードのファイルと行番号を取得するコード
Safari (Chrome は同じカーネルを使用します) も Opera もこのメカニズムをサポートしていないことに注意してください。そのため、このメソッドは例外情報を取得するために使用できません。 try-catch のみを使用できます。

実験後、Safari の Error オブジェクトには次の属性があります。

message - エラー メッセージ
line - エラー コードが存在する行数
sourceId - 1
sourceURL - エラー コードが存在するファイルを示します。
Opera の Error オブジェクトには次の属性があります。

メッセージ - プロンプト情報
opera#sourceloc - エラー コードの行番号
stacktrace - エラー スタック情報
これら 2 つのブラウザのエラー オブジェクトは、十分な情報を提供します。デバッグに使用します。次に行う必要があるのは、これら 2 つの方法を組み合わせて、これらのエラーがさまざまなブラウザーで適切に報告されるようにすることです。

次のコードは、さまざまなブラウザーで例外を報告する機能をカプセル化しています:




コードをコピー コード

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート