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

  • Blunty

    Blunty

    13 Mart 2006
  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • steeletraining

    steeletraini

    28 NİSAN 2010