我有Java开发人员的背景,对JavaScript/TypeScript还很陌生。
是否有标准方法来管理和保留JavaScript/TypeScript中错误的原因?
我的目的是在将一个错误 Package 到另一个错误中时获得完整的堆栈跟踪;有点像Java异常堆栈跟踪:
Message of exception 1
...
Caused by: Message of exception 2
...
Caused by: Message of the root exception
我尝试了这段代码,但是err1
没有保留err2
的引用:
x一个一个一个一个x一个一个二个x
另外,我没有在Error类中找到任何名为cause
的属性。有一个stack
属性,但我认为更改它是一个不好的做法。
谢谢!
3条答案
按热度按时间fkaflof61#
Error()
构造函数现在可以接受一个options
对象作为第二个参数。这个options
对象应该有一个cause
属性,这个属性通常是另一个Error
,但它不一定是。在撰写本文时(2021年10月),Firefox、Chrome和Safari都支持新的构造函数。要获得
Error
的原因,您需要查询它的cause
属性。此外,在Firefox中,我们在控制台中获得了一些额外的信息,例如Edge当前将忽略第二个构造函数属性。
Mozilla文档:https://developer.mozilla.org/en-US/docs/web/javascript/reference/global_objects/error
ECMAScript提案:https://github.com/tc39/proposal-error-cause
mbyulnm02#
我一直使用Kristian's answer here的修改
然后你就像这样扔
请注意,如果没有捕获到,新错误的
trace
部分将不会输出到控制台。rjzwgtxy3#
我经常使用错误原因选项。我的记录器使用的文本构建函数如下所示
注意:为了能够使用Error对象的cause选项,您必须在tsconfig.json中设置一个更新的ES版本