Skip to content

eslint/no-throw-literal Pedantic

💡 A suggestion is available for this rule for some violations.

What it does

Disallows throwing literals or non-Error objects as exceptions.

Why is this bad?

It is considered good practice to only throw the Error object itself or an object using the Error object as base objects for user-defined exceptions. The fundamental benefit of Error objects is that they automatically keep track of where they were built and originated.

Examples

Examples of incorrect code for this rule:

js
throw "error";

throw 0;

throw undefined;

throw null;

var err = new Error();
throw "an " + err;
// err is recast to a string literal

var err = new Error();
throw `${err}`;

Examples of correct code for this rule:

js
throw new Error();

throw new Error("error");

var e = new Error("error");
throw e;

try {
  throw new Error("error");
} catch (e) {
  throw e;
}

How to use

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny no-throw-literal
json
{
  "rules": {
    "no-throw-literal": "error"
  }
}

References

Released under the MIT License.