跳到内文

eslint/no-throw-literal 学究式

💡对于该规则,针对一些违规行为提供有建议。

其作用

不允许将字面量或非 Error 对象作为异常抛出。

为什么这不好?

通常而言,只抛出 Error 对象本身或使用 Error 对象作为用户定义异常的基础对象的某个对象是比较好的做法。Error 对象的根本优势是它们可自动记录它们建构和源自何处。

示例

此规则中不正确代码的示例

js
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}`;

该规则中正确代码的示例

js
throw new Error();

throw new Error("error");

var e = new Error("error");
throw e;

try {
  throw new Error("error");
} catch (e) {
  throw e;
}

参考

根据 MIT 许可证发布。