Skip to content
← Back to rules

eslint/no-unsafe-finally 正确性

This rule is turned on by default.

它做了什么

禁止在 finally 块中使用控制流语句。

为什么这是不好的?

finally 块执行完成之前,JavaScript 会暂停 trycatch 块中的控制流语句。

因此,当在 finally 块中使用 returnthrowbreakcontinue 时,trycatch 块中的控制流语句会被覆盖。 这可能会导致开发者意想不到的行为。

示例

此规则的 错误 代码示例:

javascript
// 我们期望这个函数返回 1;
(() => {
  try {
    return 1; // 1 被返回但被暂停,直到 finally 块结束
  } catch (err) {
    return 2;
  } finally {
    return 3; // 3 在 1 之前被返回,这是我们未预期的
  }
})();

// > 3

如何使用

要通过配置文件或 CLI 启用 此规则,可以使用:

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

参考资料