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

  • knopik96

    knopik96

    7 Mayıs 2011
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008
  • Music EuroDance 2

    Music EuroDa

    12 Mayıs 2011