【发布时间】:2018-11-26 12:44:22
【问题描述】:
我正在使用 Promise,并且代码如下所示:
function getStuff() {
return fetchStuff().then(stuff =>
process(stuff)
).catch(err => {
console.error(err);
});
}
或者:
async function getStuff() {
try {
const stuff = await fetchStuff();
return process(stuff);
} catch (err) {
console.error(err);
}
}
我这样做是为了避免遗漏错误,但一位用户告诉我我不应该这样做,并且不赞成这样做。
-
return ….catch(err => console.error(err))有什么问题? - 我见过很多这样的代码,为什么?
- 我应该怎么做?
【问题讨论】:
-
"
catch-voidantipattern" 也许? -
@David784 很抱歉! (那是我的错)。措辞是不幸的,自从我们在 7.7 中发布它以来,我一直想改变它。 Madara 在 v10 中使错误变得更好,我们将很快解决该问题 - 如果未处理的拒绝在 v11 和 v12 中默认收集垃圾并且弃用警告将消失,则将终止该过程。
-
-
稍微削弱这个问题,我会高度怀疑有人告诉你不要做某事,但又没有解释为什么会出现这种情况。如果该用户有反对使用它的有效论据,他们应该提及它。或者你应该先让他们澄清;因为我们无法知道确切的联系方式(或他们的意见)。
-
@Flater 注意我写了问题和答案,我这样做是因为当我们为 Node.js 峰会分析存储库和“野外”代码时,这种事情经常出现。事实上,我这样做正是为了让我们可以指出“为什么”。
标签: javascript node.js promise try-catch