no-throw-literal
禁止将字面量作为异常抛出
建议只throw
Error
对象本身或使用Error
对象作为基对象的用于用户定义异常的对象。Error
对象的根本好处是它们会自动跟踪它们是在哪里构建和起源的。
此规则限制了可以作为异常抛出的内容。在最初创建时,它只阻止字面量被抛出(因此得名),但现在它已被扩展为只允许有可能成为Error
对象的表达式。
规则详情
此规则旨在通过禁止抛出字面量和其他不可能是Error
对象的表达式来维护抛出异常时的一致性。
此规则的不正确代码示例
在游乐场中打开
/*eslint no-throw-literal: "error"*/
var err = new Error();
// err is recast to a string literal
var err = new Error();
此规则的正确代码示例
在游乐场中打开
/*eslint no-throw-literal: "error"*/
throw new Error();
throw new Error("error");
var e = new Error("error");
throw e;
try {
throw new Error("error");
} catch (e) {
throw e;
}
已知局限性
由于静态分析的局限性,此规则无法保证您只抛出Error
对象。
此规则的正确代码示例,但不抛出Error
对象
在游乐场中打开
/*eslint no-throw-literal: "error"*/
var err = "error";
throw err;
function foo(bar) {
console.log(bar);
}
throw foo("error");
throw new String("error");
var baz = {
bar: "error"
};
throw baz.bar;
版本
此规则在 ESLint v0.15.0 中引入。