我怎么能把一个错误当作未捕获的错误来记录呢

How can I log an error as if it was uncaught?

本文关键字:错误 记录 一个 怎么能      更新时间:2023-09-26

我有一个复杂的JavaScript应用程序,当出现某些意外错误时,我想将它们记录下来进行调试,但要继续。

如何将它们记录到控制台,以便以正常方式访问它们的堆栈以处理未捕获的错误

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

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

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

console.log(prettyformatstack(e));

其中prettyformatstack(e)出错,返回您要查找的字符串。