eslint/no-throw-literal Pedantic 
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-literaljson
{
  "rules": {
    "no-throw-literal": "error"
  }
}