Eslint
规则 | Rules

no-throw-literal

Restrict what can be thrown as an exception (no-throw-literal)

它被认为是良好的做法是只throwError对象本身或使用对象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 中引入。

资源