跳至内容

eslint/no-unsafe-finally 正确性

此规则默认情况下已启用。

它做什么

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

为什么这样不好?

JavaScript 挂起 try 和 catch 块的控制流语句,直到 finally 块的执行完成。因此,当在 finally 中使用 return、throw、break 或 continue 时,try 和 catch 中的控制流语句会被覆盖,这被认为是意外行为。

示例

javascript
// We expect this function to return 1;
(() => {
  try {
    return 1; // 1 is returned but suspended until finally block ends
  } catch (err) {
    return 2;
  } finally {
    return 3; // 3 is returned before 1, which we did not expect
  }
})();

// > 3

参考

根据 MIT 许可证发布。