Nasıl bir Javascript istisnası attığımda yığın izlemesini alabilir miyim? | Netgez.com
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

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006
  • TomOdellVEVO

    TomOdellVEVO

    29 Mayıs 2012