eslint/no-throw-literal 严格检查
它的作用
禁止抛出字面量或非 Error 对象作为异常。
WARNING
此规则已弃用,请改用 typescript/only-throw-error。 TypeScript 版本的规则比 JavaScript 版本更可靠,因为其误报更少,并且能覆盖更多场景。
为什么这是不好的?
最佳实践是仅抛出 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;
}如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"no-throw-literal": "error"
}
}bash
oxlint --deny no-throw-literal