Error() constructor
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
TheError()
constructor createsError
objects.
Syntax
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 withoutnew
. Both create a newError
instance.
Parameters
message
OptionalA human-readable description of the error.
options
OptionalAn object that has the following properties:
cause
OptionalA value indicating the specific cause of the error, reflected in the
cause
property. When catching and re-throwing an error with a more-specific or useful error message, this property can be used to pass the original error.
fileName
OptionalNon-standardThe 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 theError()
constructor.lineNumber
OptionalNon-standardThe line number within the file on which the error was raised, reflected in the
lineNumber
property. Defaults to the line number containing theError()
constructor invocation.
Examples
Function call or new construction
WhenError
is used like a function, that is withoutnew
, it will return anError
object.Therefore, a mere call toError
will produce the same output that constructing anError
object via thenew
keyword would.
const x = Error("I was created using a function call!");// above has the same functionality as followingconst y = new Error('I was constructed via the "new" keyword!');
Rethrowing an error with a cause
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 newError
, as shown.
try { frameworkThatCanThrow();} catch (err) { throw new Error("New error message", { cause: err });}
For a more detailed example seeError > Differentiate between similar errors.
Omitting options argument
JavaScript only tries to readoptions.cause
ifoptions
is an object — this avoids ambiguity with the other non-standardError(message, fileName, lineNumber)
signature, which requires the second parameter to be a string. If you omitoptions
, pass a primitive value asoptions
, or pass an object without thecause
property, then the createdError
object will have nocause
property.
// Omitting optionsconst error1 = new Error("Error message");console.log("cause" in error1); // false// Passing a primitive valueconst error2 = new Error("Error message", "");console.log("cause" in error2); // false// Passing an object without a cause propertyconst error3 = new Error("Error message", { details: "http error" });console.log("cause" in error3); // false
Specifications
Specification |
---|
ECMAScript® 2026 Language Specification # sec-error-constructor |