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
*bar
7.
CEVAP
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.
Nasıl bir dize dönüştürmek için yığın ...
Nasıl JavaScript para olarak format nu...
Nasıl bir dize JavaScript kullanarak s...
Nasıl JavaScript ile dosya uzantıların...
Nasıl Javascript ile form verilerini j...