no-throw-literal
Restrict what can be thrown as an exception (no-throw-literal)
它被认为是良好的做法是只throw
在Error
对象本身或使用对象Error
物,作为用户定义的异常基础对象。Error
对象的根本好处是他们会自动跟踪他们的构建和起源。
此规则限制可以作为例外抛出的内容。当它刚刚创建时,它只会阻止文字被引发(因此也就是名称),但现在它已经扩展为只允许有可能成为Error
对象的表达式。
规则细节
该规则旨在通过不允许抛出不可能是Error
对象的文字和其他表达式来抛出异常时保持一致性。
此规则的错误
代码示例:
/*eslint no-throw-literal: "error"*/
/*eslint-env es6*/
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}`
此规则的正确
代码示例:
/*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 foo = {
bar: "error"
};
throw foo.bar;
版本
该规则在 ESLint 0.15.0 中引入。