我有一个复杂的JavaScript应用程序,当发生某些意外错误时,我想记录它们进行调试,但仍然继续。如何将错误记录为未被捕获?
如何将它们登录到控制台,以便它们的堆栈可以以正常方式访问未捕获的错误?
Chrome控制台中的未被捕获的错误通常只显示错误消息,并且有一个显示三角形,可以单击以显示堆栈跟踪。这个(以及Chrome现在或未来可能为未捕获的错误添加的其他调试功能)是我想要的。
如果我做了明显的catch (e) { console.log(e); }
或console.error(e)
,错误对象,而不是显示在对象的检查方式 - 有一个三角形,但点击它显示的错误对象(的性质,所以我必须点击四次以非常格式化的方式获取堆栈属性)。我可以登录e.stack
,但仍然缺少一些标准功能。
setTimeout(function() { throw e; }, 0);
是另一种选择,但会混淆调试,因为它会更改控制台中消息的顺序。 (把整个代码可能抛出setTimeout 可能是可行的,但我想调查只是修复日志记录第一。)
我不认为你想要什么是可能的,但如果你可以,看看AngularJS的来源,他们基本上是你想要的。被警告说*它使任何其他浏览器中的调试几乎不可能!* – Kroltan 2015-04-06 00:24:17