【发布时间】:2021-09-21 00:25:29
【问题描述】:
我有一个函数,它的声纳报告它没有一致地使用返回:
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);
}
}
但是,使用此函数,即使我在 if 中也没有返回任何内容,声纳也没有检测到它使用 return 不一致:
getGroup() {
const manager = groupManagement.getInstance();
const group = await manager.getAllGroup();
let result = [];
if (group && group.length) {
result = group.map((x) => x.rate);
}
return result;
}
是因为 try, catch 块吗?你能解释一下为什么吗?
【问题讨论】:
-
如果
try块内抛出错误,您认为函数会返回什么? -
哦,我现在明白了。谢谢@Ivar
-
catch 错误块中的常见返回是什么,返回 null? @Ivar
-
这在一定程度上取决于调用函数时是否可以预期。如果您返回
null,但调用代码没有考虑到这一点,则很可能会导致错误。如果没有要返回的逻辑值,则可能强烈表明错误处理应该在该行的其他位置而不是在此函数中。这一切都取决于如果您的代码未能获得速率应该发生什么。
标签: javascript sonarqube return