首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

no-throw-literal

它被认为是良好的做法是只throwError对象本身或使用对象Error物,作为用户定义的异常基础对象。Error对象的根本好处是他们会自动跟踪他们的构建和起源。

此规则限制可以作为例外抛出的内容。当它刚刚创建时,它只会阻止文字被引发(因此也就是名称),但现在它已经扩展为只允许有可能成为Error对象的表达式。

规则细节

该规则旨在通过不允许抛出不可能是Error对象的文字和其他表达式来抛出异常时保持一致性。

此规则的错误代码示例:

代码语言:javascript
复制
/*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}`

此规则的正确代码示例:

代码语言:javascript
复制
/*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对象:

代码语言:javascript
复制
/*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 中引入。

资源

扫码关注腾讯云开发者

领取腾讯云代金券