eslint/no-unsafe-finally 正しさ
何を行うか
finally ブロック内での制御フロー文の使用を禁止します。
なぜ問題なのか
JavaScript は、try ブロックおよび catch ブロックの制御フロー文を、finally ブロックの実行が終了するまで一時停止します。
したがって、finally ブロック内で return、throw、break、または continue が使用されると、try や catch 内の制御フロー文が上書きされてしまいます。これは開発者にとって意図しない動作である可能性があります。
例
このルールに違反する不適切なコード例:
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