如果我自己抛出JavaScript异常(例如throw "AArrggg"),我如何获得堆栈跟踪(在Firebug中或其他方式)?现在我收到消息.
编辑:正如下面很多人都贴出来,就可以得到一个堆栈跟踪JavaScript异常,但我希望得到一个堆栈跟踪我的异常.例如:
function foo() {
bar(2);
}
function bar(n) {
if (n < 2)
throw "Oh no! 'n' is too small!"
bar(n-1);
}
Run Code Online (Sandbox Code Playgroud)
当foo被调用时,我希望得到一个堆栈跟踪,其中包括在两个电话foo,bar,bar.
我现在正在开发一个应用程序,并放置一个全局isDebug开关.我想换行console.log以方便使用.
//isDebug controls the entire site.
var isDebug = true;
//debug.js
function debug(msg, level){
var Global = this;
if(!(Global.isDebug && Global.console && Global.console.log)){
return;
}
level = level||'info';
Global.console.log(level + ': '+ msg);
}
//main.js
debug('Here is a msg.');
Run Code Online (Sandbox Code Playgroud)
然后我在Firefox控制台中得到了这个结果.
info: Here is a msg. debug.js (line 8)
Run Code Online (Sandbox Code Playgroud)
如果我想用debug()被调用的行号记录,info: Here is a msg. main.js (line 2)怎么办?
我使用以下内容来获取JavaScript调用者函数名称:
var callerFunc = arguments.callee.caller.toString();
callerFuncName = (callerFunc.substring(callerFunc.indexOf("function") + 8, callerFunc.indexOf("(")) || "anoynmous")
Run Code Online (Sandbox Code Playgroud)
有没有办法发现调用该方法的行号?
另外,有没有办法获取调用该方法的JavaScript文件的名称?还是源URL?