我正在编写一个错误事件处理程序,它捕获错误并对服务器进行ajax调用以进行报告。问题是,很多时候,我的代码看起来像这样:
function A() {
//lots of works to calculate SomeParameters; can bug
CalledVeryOften(SomeParameters);
}
function CalledVeryOften(SomeParameters) {
// a little bit of work
}
如果我在功能A(或B,C,D ......)中捕获事件,那太好了!但问题是,如果window.onerror事件在CalledVeryOften中触发,则可能是参数可能无法正确计算。
CalledVeryOften中有没有办法确定从哪个函数调用它?
感谢。
答案 0 :(得分:2)
调用函数的名称可以通过弃用的arguments.callee.caller.name
属性 MDN:arguments.callee
获得。
另一种方法是解析new Error().stack
的值。
在Chrome中,您可以使用:
var stackTrace = {};
Error.captureStackTrace(stackTrace); // Get the stack trace
stackTrace = stackTrace.stack; // Formatted string