Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
Error 实例中的 cause 数据属性指示导致该错误的具体原始原因。
在捕获错误时,我们可能会使用更具体或更加实用的信息对错误进行包装,再将其重新抛出。cause 属性就用于这一场景,以便仍然可以访问原始的错误。
它通过 options.cause 参数被传入 Error() 构造函数,并且有可能不存在。
| 可写 | 是 |
| 可枚举 | 否 |
| 可配置 | 是 |
cause 的值可以是任何类型。你不应该假设捕获错误的 cause 属性是一个 Error,正如在 catch 语句中绑定的变量未必一定是 Error。下文“将结构化的数据作为 cause”示例展示了刻意不提供 Error 作为 cause 的情况。
有时,捕获错误并使用新的错误信息将其重新抛出是很有用的。在这种情况下,你应该将原始错误传递给新的 Error 的构造函数,如下所示:
更详细的示例请参阅错误 > 区分相似的错误。
为开发者理解而编写的错误消息可能并不适合机器解析,因为它们会受到表达方式改变(rewording),或标点符号改变的影响,破坏已有解析器的正常使用。因此,当从函数中抛出错误时,你可以提供结构化的数据作为错误原因(即 cause 字段)供机器解析,以此替代人类可读的错误消息。
| ECMAScript® 2027 Language Specification # sec-installerrorcause |
启用 JavaScript 以查看此浏览器兼容性表。