no-throw-literal
禁止將字面值作為例外拋出
僅 throw
Error
物件本身,或使用 Error
物件作為使用者定義例外基底物件的物件,被認為是良好的實踐。Error
物件的基本好處是它們會自動追蹤它們的建立和來源位置。
此規則限制了可以作為例外拋出的內容。當它最初建立時,它只防止拋出字面值(因此得名),但現在它已擴展為僅允許可能為 Error
物件的表達式。
規則詳情
此規則旨在通過禁止拋出字面值和其他不可能為 Error
物件的表達式,來維護拋出例外時的一致性。
此規則的錯誤程式碼範例
在遊樂場中開啟
/*eslint no-throw-literal: "error"*/
var err = new Error();
// err is recast to a string literal
var err = new Error();
此規則的正確程式碼範例
在遊樂場中開啟
/*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 baz = {
bar: "error"
};
throw baz.bar;
版本
此規則在 ESLint v0.15.0 中引入。