The Error()
constructor creates Error
objects.
The Error()
constructor creates Error
objects.
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)
Note: Error()
can be called with or without new
. Both create a new Error
instance.
message
Optional
A human-readable description of the error.
options
Optional
An object that has the following properties:
fileName
Optional Non-standard
The path to the file that raised this error, reflected in the fileName
property. Defaults to the name of the file containing the code that called the Error()
constructor.
lineNumber
Optional Non-standard
The line number within the file on which the error was raised, reflected in the lineNumber
property. Defaults to the line number containing the Error()
constructor invocation.
When Error
is used like a function, that is without new
, it will return an Error
object. Therefore, a mere call to Error
will produce the same output that constructing an Error
object via the new
keyword would.
const x = Error("I was created using a function call!"); // above has the same functionality as following const y = new Error('I was constructed via the "new" keyword!');
It is sometimes useful to catch an error and re-throw it with a new message. In this case you should pass the original error into the constructor for the new Error
, as shown.
try { frameworkThatCanThrow(); } catch (err) { throw new Error("New error message", { cause: err }); }
For a more detailed example see Error > Differentiate between similar errors.
JavaScript only tries to read options.cause
if options
is an object — this avoids ambiguity with the other non-standard Error(message, fileName, lineNumber)
signature, which requires the second parameter to be a string. If you omit options
, pass a primitive value as options
, or pass an object without the cause
property, then the created Error
object will have no cause
property.
// Omitting options const error1 = new Error("Error message"); console.log("cause" in error1); // false // Passing a primitive value const error2 = new Error("Error message", ""); console.log("cause" in error2); // false // Passing an object without a cause property const error3 = new Error("Error message", { details: "http error" }); console.log("cause" in error3); // false
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | Deno | Node.js | ||
Error |
1 | 12 | 1 | 4 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1.0 | 0.10.0 | |
fileName_parameter |
No | No | 1 | No | No | No | 4 | No | No | No | No | No | No | |
lineNumber_parameter |
No | No | 1 | No | No | No | 4 | No | No | No | No | No | No | |
options_cause_parameter |
93 | 93 | 91 | 79 | 15 | 93 | 91 | 66 | 15 | 17.0 | 93 | 1.13 | 16.9.0 |
Error
with cause
support in core-js
throw
try...catch
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Error