Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. JavaScript
  3. JavaScript 参考
  4. JavaScript 标准内置对象
  5. Error
  6. Error() 构造函数

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

Error() 构造函数

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

Error() 构造函数能够创建一个包含错误信息的对象。

语法

js
new Error()new Error(message)new Error(message, options)new Error(message, fileName)new Error(message, fileName, lineNumber)Error()Error(message)Error(message, options)Error(message, fileName)Error(message, fileName, lineNumber)

备注:调用Error() 时,可以使用关键字new,也可以不使用。两种声明方式均能创建一个新的Error 实例。

参数

message可选

人类可读的错误信息。

options可选

一个包含以下属性的对象:

cause可选

指示错误的具体原因,反映在cause 属性中。当捕获并重新抛出带有更具体或有用的错误消息的错误时,可以使用此属性传递原始错误。

fileName可选非标准

引发此错误的文件路径,反映在fileName 属性中。默认为调用Error() 构造函数的代码所在文件的名称。

lineNumber可选非标准

引发错误的文件中的行号,反映在lineNumber 属性中。默认为包含Error() 构造函数调用的行号。

示例

函数调用与构造函数

Error 作为函数使用,即不包含new 关键字时,它将返回一个 Error 对象。因此,直接调用Error 函数将产生与使用new 关键字构造Error 对象相同的输出。

js
const x = Error("I was created using a function call!");// 上述代码与以下代码具有相同的功能const y = new Error('I was constructed via the "new" keyword!');

使用 cause 重新抛出错误

在捕获错误时,我们可能会使用新的错误信息对错误进行包装,再将其重新抛出。这种场景下,你应当将原始错误也传入新的Error 的构造函数,如下所示:

js
try {  frameworkThatCanThrow();} catch (err) {  throw new Error("New error message", { cause: err });}

更多示例参考错误 > 区分相似的错误

省略 options 参数

JavaScript 只有在options 参数为对象时才会尝试读取options.cause 属性,这样可以避免与另一种非标准的Error(message, fileName, lineNumber) 函数签名产生歧义,后者要求第二个参数必须是字符串。如果你省略了options 参数,或者将原始值作为options 传入,又或者传递的对象中没有cause 属性,那么创建的Error 对象将不会包含cause 属性。

js
// 省略 optionsconst error1 = new Error("Error message");console.log("cause" in error1); // false// 传递原始值const error2 = new Error("Error message", "");console.log("cause" in error2); // false// 传递不包含 cause 属性的对象const error3 = new Error("Error message", { details: "http error" });console.log("cause" in error3); // false

规范

Specification
ECMAScript® 2026 Language Specification
# sec-error-constructor

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp