javascript - 为什么错误中堆栈属性是可选的?

标签 javascript error-handling

Error中,属性(property)stack是可选的。然而,当我抛出 new Error('myError')或者当我在执行脚本期间抛出一般错误时,我总是会得到堆栈。根据浏览器,堆栈不一样但我不是 undefined .

  • 我想知道在什么情况下可能有未定义的堆栈?

最佳答案

JavaScript specification 未定义 stack 属性(然而)。因此,兼容的 JavaScript 实现很可能在 Error 实例上没有 stack 属性。现在大多数都这样做(当然是三大巨头:V8、SpiderMonkey 和 JavaSciptCore),但它还没有标准化,所以他们不必这样做。

In an Error, the property stack is optional.

我猜您指的是 TypeScript 的错误类型信息:

interface Error {
    stack?: string | undefined;
}

由于大多数 JavaScript 引擎都提供 string 类型的 stack 属性,即使规范中没有定义它,因此它是可选的类型字符串| undefined 是一个务实的选择(TypeScript 项目团队是出了名的务实)。因此,他们并没有完全忽略它,而是承认这种常见做法。

I was wondering in which case it was possible to have an undefined stack?

我认为在支持它的实现上的Error实例上不太可能有一个未定义stack(更有可能 “”(如果没有可用的堆栈信息,但我不记得看到过空白堆栈)。也就是说,TYpeScript 的类型将其定义为 stack?: string | 可能是有原因的。未定义而不是stack?: string

关于javascript - 为什么错误中堆栈属性是可选的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75109188/

相关文章:

javascript - Ajax 之后设置异步标记集群

javascript - 如何在同一页面上有多个谷歌自定义搜索字段

Javascript类变量未定义错误

javascript - Uncaught ReferenceError : angular is not defined (anonymous function)

c++ - 具有 union 返回类型的函数调用

c - 检测 nCr 函数中的溢出

python - 从 API 将数据写入数据帧时失败

javascript - Facebook 评论计数 IE8 innerHTML 错误

python - formencode无效的返回类型

function - 如何允许使用-erroraction调用函数