SORU
26 ŞUBAT 2009, PERŞEMBE


Nasıl bir Javascript istisnası attığımda yığın izlemesini alabilir miyim?

Eğer Javascript bir durum kendimi (, throw "AArrggg" eg) atarsam, nasıl trace (Firebug ya da başka) yığın alabilir miyim? Şimdi sadece mesaj değil.

editBirçok kişi aşağıda attılar olarak, olası bir izleme için bir yığınJavaScript durumama bir yığın izlemesi almak istiyorumbenimözel durumlar. Örneğin:

function foo() {
    bar(2);
}
function bar(n) {
    if (n < 2)
        throw "Oh no! 'n' is too small!"
    bar(n-1);
}

foo çağrıldığında, bir yığın almak istiyorum aramaları içeren izleme, *, bar*bar7.

CEVAP
11 Mart 2009, ÇARŞAMBA


this snippet modifiye edilmiş bir versiyonu biraz yardımcı olabilir:

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);
}

< / ^ br . DÜZENLEME :

Orijinal sorusu üzerine yorumlarda belirttiği gibi (ve daha kolay) daha iyi bir çözüm gibi Error bir nesnenin stack Bu özelliği kullanmak için:

function stackTrace() {
    var err = new Error();
    return err.stack;
}

Bunun gibi bir çıktı oluşturur:

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

URL ile birlikte arama işlevinin bir isim vermiş, amacını ve işlevini.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • 趣味そうこ♪

    趣味そう

    3 Mart 2010
  • New Challenger - Game Reviews

    New Challeng

    20 Temmuz 2006