Spec-Zone.ru › ESLint

no-throw-literal

Запрещает выбрасывать литералы в качестве исключений

Считается хорошей практикой только throw сам объект Error или объект, использующий объект Error в качестве базового объекта для пользовательских исключений. Основное преимущество объектов Error состоит в том, что они автоматически отслеживают, где были созданы и откуда появились.

Это правило ограничивает то, что можно выбрасывать в качестве исключения. Когда оно было создано, оно предотвращало выбрасывание только литералов (отсюда и название), но теперь оно расширено и разрешает только выражения, которые потенциально могут быть объектом Error.

Подробности правила

Это правило призвано обеспечить единообразие при выбрасывании исключений, запрещая выбрасывать литералы и другие выражения, которые не могут быть объектом Error.

Примеры некорректного кода для этого правила:

Открыть в Playground
/*eslint no-throw-literal: "error"*/

throw "error";

throw 0;

throw undefined;

throw null;

const err = new Error();
throw "an " + err;
// err is recast to a string literal

const er2 = new Error();
throw `${err2}`

Примеры корректного кода для этого правила:

Открыть в Playground
/*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:

Открыть в Playground
/*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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API