Skip to content
← Back to rules

eslint/no-unsafe-finally 正しさ

This rule is turned on by default.

何を行うか

finally ブロック内での制御フロー文の使用を禁止します。

なぜ問題なのか

JavaScript は、try ブロックおよび catch ブロックの制御フロー文を、finally ブロックの実行が終了するまで一時停止します。

したがって、finally ブロック内で returnthrowbreak、または continue が使用されると、trycatch 内の制御フロー文が上書きされてしまいます。これは開発者にとって意図しない動作である可能性があります。

このルールに違反する不適切なコード例

javascript
// 期待されるのは関数が 1 を返すこと;
(() => {
  try {
    return 1; // 1 が返されたが、finally ブロックの終了まで一時停止される
  } catch (err) {
    return 2;
  } finally {
    return 3; // 1 より前に 3 が返され、予期していなかった
  }
})();

// > 3

使用方法

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

json
{
  "rules": {
    "no-unsafe-finally": "error"
  }
}
bash
oxlint --deny no-unsafe-finally

参照