カスタム例外の JavaScript スタック トレースの取得
JavaScript コードを実行するとき、例外はスクリプトで発生する問題についての貴重な洞察を提供する可能性があります。ただし、自分でスローした例外のスタック トレースを取得するのは困難です。この記事では、この問題に対処し、独自の例外に特化したスタック トレースを取得するための解決策を提供します。
当初は、組み込み JavaScript 例外のスタック トレースのみを取得できました。ただし、最新のブラウザの進歩により、この制限に対処するための新しい技術が導入されました。
最新のブラウザの Console.trace()
最近のブラウザでは、console.trace( )の方法が利用可能です。これを呼び出すと、console.trace() 呼び出しの場所を含むスタック トレースを取得できます。
console.trace();
Error Stack Propertyすべてのブラウザ向け
元の質問のコメント投稿者によって共有された洗練された解決策には、Error オブジェクトの stack プロパティを利用することが含まれます。
function stackTrace() {
var err = new Error();
return err.stack;
}
このアプローチでは、console.trace():
DBX.Utils.stackTrace@http://localhost:49573/assets/js/scripts.js:44 DBX.Console.Debug@http://localhost:49573/assets/js/scripts.js:9 .success@http://localhost:49573/:462 x.Callbacks/c@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 x.Callbacks/p.fireWith@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 k@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6 .send/r@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6
カスタム スタック トレース関数
これらのメソッドをサポートしていない古いブラウザでは、より複雑な関数を使用してカスタム スタック トレースを取得できます。
function stacktrace() {
function st2(f) {
return !f ? [] :
st2(f.caller).concat([f.toString().split('(')[0].substring(9) '(' f.arguments.join(',') ')']);
}
return st2(arguments.callee.caller);
}
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3