重构此函数以在if语句javascript内外一致地使用“return”

eyh26e7m  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(584)

我有一个功能,其中it sonar报告它不一致地使用return:

function getRate(a) {
  try {
    const manager = rateManagement.getInstance();
    const rate = await manager.getAllRate();
    let result = 0;

    if (rate && rate.length) {
      const rateConfig = rate.find((x) => x.rate?.includes(a));
      const aRating = rateConfig?.rate;

      result = aRating || result;
    }

    return result;
  } catch (error) {
    logger.logError(error);
  }
}

但是,使用此功能时,sonar没有检测到它不一致地使用返回,即使我也没有返回if中的任何内容:

getGroup() {
  const manager = groupManagement.getInstance();
  const group = await manager.getAllGroup();

  let result = [];

  if (group && group.length) {
    result = group.map((x) => x.rate);
  }

  return result;
}

是不是因为试抓块的缘故?你能解释一下为什么吗?

mpbci0fu

mpbci0fu1#

作用 getRate 如果在try块内抛出错误,则不返回值,因为catch块只记录错误,而不返回值。您可以通过返回一些值来“修复”此问题,例如。, undefined . 但是,抛出错误并让调用者处理通常更有意义。

相关问题