跳至內容

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 許可發布。