no-throw-literal
Запрещает выбрасывать литералы в качестве исключений
Считается хорошей практикой только throw сам объект Error или объект, использующий объект Error в качестве базового объекта для пользовательских исключений. Основное преимущество объектов Error состоит в том, что они автоматически отслеживают, где были созданы и откуда появились.
Это правило ограничивает то, что можно выбрасывать в качестве исключения. Когда оно было создано, оно предотвращало выбрасывание только литералов (отсюда и название), но теперь оно расширено и разрешает только выражения, которые потенциально могут быть объектом Error.
Подробности правила
Это правило призвано обеспечить единообразие при выбрасывании исключений, запрещая выбрасывать литералы и другие выражения, которые не могут быть объектом Error.
Примеры некорректного кода для этого правила:
/*eslint no-throw-literal: "error"*/
const err = new Error();
// err is recast to a string literal
const er2 = new Error();
Примеры корректного кода для этого правила:
/*eslint no-throw-literal: "error"*/
throw new Error();
throw new Error("error");
const e = new Error("error");
throw e;
try {
throw new Error("error");
} catch (e) {
throw e;
}
Параметры
У этого правила нет параметров.
Известные ограничения
Из-за ограничений статического анализа это правило не может гарантировать, что вы будете выбрасывать только объекты Error.
Примеры корректного кода для этого правила, который не выбрасывает объект Error:
/*eslint no-throw-literal: "error"*/
const err = "error";
throw err;
function foo(bar) {
console.log(bar);
}
throw foo("error");
throw new String("error");
const baz = {
bar: "error"
};
throw baz.bar;
Версия
Это правило появилось в ESLint v0.15.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-throw-literal