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

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

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

  1. function getRate(a) {
  2. try {
  3. const manager = rateManagement.getInstance();
  4. const rate = await manager.getAllRate();
  5. let result = 0;
  6. if (rate && rate.length) {
  7. const rateConfig = rate.find((x) => x.rate?.includes(a));
  8. const aRating = rateConfig?.rate;
  9. result = aRating || result;
  10. }
  11. return result;
  12. } catch (error) {
  13. logger.logError(error);
  14. }
  15. }

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

  1. getGroup() {
  2. const manager = groupManagement.getInstance();
  3. const group = await manager.getAllGroup();
  4. let result = [];
  5. if (group && group.length) {
  6. result = group.map((x) => x.rate);
  7. }
  8. return result;
  9. }

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

mpbci0fu

mpbci0fu1#

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

相关问题