Javascript 如何将错误记录为未捕获的错误?

Javascript 如何将错误记录为未捕获的错误?,javascript,google-chrome,console.log,Javascript,Google Chrome,Console.log,我有一个复杂的JavaScript应用程序,当某些意外错误发生时,我想记录它们以进行调试,但仍要继续 如何将它们记录到控制台,以便在发生未捕获错误时可以正常访问它们的堆栈? Chrome控制台中的未捕获错误通常只显示错误消息,并且有一个可以单击以显示堆栈跟踪的公开三角形。这(以及Chrome现在或将来可能为未捕获错误添加的任何其他调试功能)正是我想要的 如果我执行明显的catch(e){console.log(e);}或console.error(e),错误对象将以对象检查器的方式显示-有一个三

我有一个复杂的JavaScript应用程序,当某些意外错误发生时,我想记录它们以进行调试,但仍要继续

如何将它们记录到控制台,以便在发生未捕获错误时可以正常访问它们的堆栈?

Chrome控制台中的未捕获错误通常只显示错误消息,并且有一个可以单击以显示堆栈跟踪的公开三角形。这(以及Chrome现在或将来可能为未捕获错误添加的任何其他调试功能)正是我想要的

如果我执行明显的
catch(e){console.log(e);}
console.error(e)
,错误对象将以对象检查器的方式显示-有一个三角形,但单击它会显示错误对象的属性(因此我必须再单击四次才能以格式不正确的方式获得堆栈属性)。我可以记录
e.stack
,但仍然缺少一些标准功能

setTimeout(函数(){throw e;},0)
是另一个选项,但会混淆调试,因为它会更改控制台中消息的顺序。(将可能抛出setTimeout的整个代码放入其中可能是可行的,但我想先研究修复日志记录。)

console.log(prettyformatstack(e))取而代之


其中
prettyformatstack(e)
发生错误,返回您正在查找的字符串。

您是在暗示建议我执行
console.log(e.stack)
。当然,这会得到堆栈,但不会得到其余的格式。我可以通过使用
控制台更进一步。groupCollapsed
,但它仍然不是标准的未捕获错误格式,而且在未来的Chrome版本中不会引入任何调试便利。然后只需编写一个函数,按照您想要的格式对其进行格式化,这很简单,我不想复制浏览器功能,我想调用它们!但是如果我想要的结果是不可能的,那么明确地记录堆栈就是一个很好的备份计划。谢谢你指出了这种可能性。我不认为你想要什么是可能的,但是如果你可以的话,看看AngularJS的资料,他们基本上做了你想要的。请注意,这使得在任何其他浏览器中调试几乎不可能!