【问题标题】:Why "catch" doesn't handle rejected promise?为什么“catch”不处理被拒绝的承诺?
【发布时间】:2018-07-04 10:51:53
【问题描述】:

我有一个非常简单的函数,它获取一个数字并返回一个 Promise。我不明白为什么如果承诺被拒绝,当我调用这个函数时我无法捕捉到它?而是节点抛出“发生异常”

function check(num) {
  return new Promise((resolve , reject) => {
    if (num > 2) resolve('good')
    else reject('bad') 
  })
}

check(1)
 .then(res => console.log(res))
 .catch(err => console.log(err))

【问题讨论】:

  • 如果你只用node运行它应该可以正常工作。您的 IDE 可能正在做一些奇怪的事情。 (此外,您通常希望使用 Error 实例来拒绝,以保持一切顺利,例如 new Error('bad')。)
  • 我编辑了您的帖子但被拒绝了...如果您使用 sn-p 运行它,您会看到它在浏览器中运行良好。
  • 您的代码运行良好。刚刚在 chrome 控制台和节点应用程序中尝试过。
  • sjahan,@Ryan 感谢您的帮助!问题确实出在 VS Code 中......

标签: javascript node.js error-handling promise


【解决方案1】:

此代码应该可以正常运行。问题出在 IDE/调试器中。

如果您使用 Microsoft Visual Studio Code 之类的东西并使用断点运行,您应该能够设置 IDE 应该抛出的异常类型。

通常您可以在调试面板中找到几个选项,说明何时发出异常信号,例如AllUncaughtPromise rejects 等。因此请尝试检查编辑器中的调试面板。

【讨论】:

  • 谢谢孩子!它适用于未经检查的“未捕获的异常”!
猜你喜欢
  • 2021-12-22
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多