我无法理解为什么在throw
中使用.catch
给我"Unhandled promise rejection"
。如果我只是console.log
错误,那么每一件事都应该如此运作。
" throw ...在当前代码块中引发异常并导致它 退出,或者如果在try块中引发则流向下一个catch语句。
console.error只是向浏览器开发人员输出一条红色消息 工具javascript控制台并不会导致任何更改 执行流程。"
(https://stackoverflow.com/a/25377160/7825826)
似乎throw是处理它的正确方法?但为什么我会收到错误?
例如(如果我没有在1330上运行任何数据库):
mongoose.connect('mongodb://localhost:1330/db')
.catch((error) => {
throw error;
});
给我一条关于"未处理的承诺拒绝"的错误消息,但如果我console.log(error)
,则一切正常。
答案 0 :(得分:0)
当您在catch
回调中重新抛出错误时,结果承诺将被拒绝。如果拒绝未在任何地方处理(通过链中的另一个.catch
),那么您将收到“未处理的拒绝”消息。
这相当于同步
try {
connectToNotExistingDatabase(); // throws exception
} catch(error) {
throw error;
}
执行时仍然会向其调用者抛出异常。相反,如果你没有重新throw
n它(但console.log
ged它),它只会返回undefined
。