Skip to content
← Back to rules

eslint/no-throw-literal Pedantic

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

作用

禁止抛出字面量或非 Error 对象作为异常。

WARNING

此规则已被弃用,请改用 typescript/only-throw-error。 与 Javascript 版本相比,typescript 规则更可靠,因为它的误报更少,并且能捕获更多情况。

为什么这不好?

通常认为,只抛出 Error 对象本身,或者抛出以 Error 对象为基类的用户自定义异常对象,才是良好实践。Error 对象的根本优势在于,它们会自动记录自己被构建和产生的位置。

示例

以下是此规则的错误代码示例:

js
throw "error";

throw 0;

throw undefined;

throw null;

var err = new Error();
throw "an " + err;
// err 被重写为一个字符串字面量

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

以下是此规则的正确代码示例:

js
throw new Error();

throw new Error("error");

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

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

如何使用

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

json
{
  "rules": {
    "no-throw-literal": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-throw-literal": "error",
  },
});
bash
oxlint --deny no-throw-literal

版本

此规则添加于 v0.9.10。

参考资料