JavaScript でスタックトレースを生成しようとしています。Chrome で非常にうまく機能する実装がありますが、Firefox には問題があります。DOMExceptions のようなネイティブ例外には.stack
プロパティがありません。
<div id="test"></div>
<script type="text/javascript">
try {
var range = document.createRange();
range.setStart(document.getElementById("test"), -1); // throws Exception
} catch (e) {
console.log(e.stack);
}
</script>
これはError: Index or size was negative, or greater than the allowed value.
at http://test/test.html:5:8
Chromeで提供されます。
しかし、Firefoxでは、undefined
悲しいことに:(
私はEriwen の stacktrace スクリプトとstracktracejsについて知っており、私の実装はそれに触発されています。フォールバックの使用を検討しますcaller.callee
が、ファイルと行番号を取得できないため、使用したくありません。
より良い解決策を知っていますか?
疑わしい呼び出しを try-catch ステートメントでラップすることはできますが、実際のエラーが発生する前に呼び出しが疑わしいかどうかがわからないため、コードを修正して二度とスローされないようにします。
例外をキャッチして再スローすることはできましたnew Error(e.message)
が、スタックトレースも失われました。