Skip to content

useThrowNewError

Diagnostic Category: lint/style/useThrowNewError

Since: v1.8.0

Sources:

Require new when throwing an error.

While it’s possible to instantiate Error without using the new keyword, it’s better to be consistent: modern builtins require new to be instantiated.

Rule matches errors when their name ends with the word “Error” and the first character is uppercase.

throw Error();
code-block.js:1:7 lint/style/useThrowNewError  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use new Error() instead of Error() when throwing an error.

> 1 │ throw Error();
^^^^^^^
2 │

Instantiate Error with new keyword for consistency with modern builtins.

Unsafe fix: Add new keyword.

1 │ throw·new·Error();
++++
throw TypeError('biome');
code-block.js:1:7 lint/style/useThrowNewError  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use new TypeError() instead of TypeError() when throwing an error.

> 1 │ throw TypeError(‘biome’);
^^^^^^^^^^^^^^^^^^
2 │

Instantiate Error with new keyword for consistency with modern builtins.

Unsafe fix: Add new keyword.

1 │ throw·new·TypeError(‘biome’);
++++
throw lib.TypeError();
code-block.js:1:7 lint/style/useThrowNewError  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Use new TypeError() instead of TypeError() when throwing an error.

> 1 │ throw lib.TypeError();
^^^^^^^^^^^^^^^
2 │

Instantiate Error with new keyword for consistency with modern builtins.

Unsafe fix: Add new keyword.

1 │ throw·new·lib.TypeError();
++++
throw new Error();
throw new TypeError('biome');
throw new lib.TypeError();