2

https://github.com/eriwen/javascript-stacktraceを使用して、例外が発生したときにスタック トレースを取得しました。

ログに記録された情報が非常に奇妙に見える場合があります。たとえば、ユーザーが IE9 を使用していて、ログに記録されたメッセージがat {anonymous}()
 at printStackTrace()
 at {anonymous}(#object,"error","")
 at {anonymous}(#object,[#object...""])
 at d(12031,"",#object,"")
 at {anonymous}().

私のコードには、jQueryイベント処理コードがかなりあります

$(document).ready(function () {
    $('#reset').bind('click', reset);
}

function reset(e){
    $.ajax({
        type: 'POST',
        url: '/my/url',
        dataType: "json",
        success: function (result) {
            // do something useful
        },
        error: function (request, error) {
            // log to server side.
            logError(error, printStackTrace());
        }
    });
}

この場合、キャプチャされたスタック トレースは匿名オブジェクトのように見えると思います。

より読みやすい方法でスタック トレースをキャプチャするより良い方法はありますか?

4

3 に答える 3

0

リンクを見てキャッチブロックを試してみませんか

<script>
var txt="";
function message()
{
try
  {
  adddlert("Welcome guest!");
  }
catch(err)
  {
  txt="There was an error on this page.\n\n";
  txt+="Error description: " + err.message + "\n\n";
  txt+="Click OK to continue.\n\n";
  alert(txt);
  }
}
</script>

http://www.w3schools.com/js/js_errors.asp

于 2013-02-25T19:48:07.380 に答える
0

http://kangax.github.com/nfe/ によると、その理由はわかっていると思いますfunction expressions is the only way to get a truly robust stack inspection

そのため、コーディングでは、デバッガーが名前をキャプチャできるようにするために関数を作成する方法を検討する必要があります。

于 2013-02-27T18:16:10.037 に答える
0

Javascript の各関数には caller プロパティがありましたが、セキュリティ上の制限により、これを当てにすることはできなくなりました。

できたとしても、無名関数には名前がないため、できることはあまりありません。スタック トレースを使用して文字列を取得し、もう少しきれいにすることができます。

function prettyTrace(stackTrace) {
    if (!stackTrace || stackTrace === "")
        return "";

    return stackTrace.replace(/\&[^;]+\;/, "");
}
于 2013-02-27T03:09:29.863 に答える