我有一个复杂的JavaScript应用程序,当发生某些意外错误时,我想记录它们以进行调试但是继续。
如何将它们记录到控制台以便以正常方式访问其堆栈以防止出现未被捕获的错误?
Chrome控制台中未被捕获的错误通常仅显示错误消息,并且具有可以单击以显示堆栈跟踪的显示三角形。这个(以及Chrome现在或将来可能为未被捕获的错误添加的任何其他调试功能)都是我想要的。
如果我执行明显的catch (e) { console.log(e); }
或console.error(e)
,则错误对象将以对象检查器的方式显示 - 有一个三角形,但单击它会显示错误对象的属性< / em>(所以我必须再单击四次才能以格式不佳的方式获取堆栈属性)。我可以记录e.stack
,但仍然缺少一些标准功能。
setTimeout(function () { throw e; }, 0);
是另一种选择,但会混淆调试,因为它会更改控制台中消息的顺序。 (将整个代码放在setTimeout 中可能可能是可行的,但我想调查一下先修复日志。)
答案 0 :(得分:0)
console.log(prettyformatstack(e));
代替!
其中prettyformatstack(e)
收到错误会返回您要查找的字符串。