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 中引入。