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;

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

var err = new Error();
throw `${err}`

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

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

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

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© 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