Skip to content
← Back to rules

eslint/no-throw-literal 細心な

An auto-fix is available for this rule.

何をするか

リテラルや非 Error オブジェクトを例外としてスローすることを禁止します。

WARNING

このルールは非推奨です。代わりに typescript/only-throw-error を使用してください。 TypeScript バージョンのルールは、より正確であり、誤検出が少なく、より多くのケースを検出できます。

なぜ問題なのか

ユーザー定義の例外に対して、エラー本体自体またはエラーオブジェクトを基底として使用するオブジェクトのみをスローすることを良い実践とされています。エラー・オブジェクトの基本的な利点は、それらが作成された場所および元となった場所を自動的に追跡できることです。

このルールにおける不正なコードの例:

js
throw "error";

throw 0;

throw undefined;

throw null;

var err = new Error();
throw "an " + err;
// err が文字列リテラルに再キャストされる

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

このルールにおける正しいコードの例:

js
throw new Error();

throw new Error("error");

var e = new Error("error");
throw e;

try {
  throw new Error("error");
} catch (e) {
  throw e;
}

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、以下のように使用できます:

json
{
  "rules": {
    "no-throw-literal": "error"
  }
}
bash
oxlint --deny no-throw-literal

参照