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