javascript - "throw new Error()"在 catch block 上下文中捕获

标签 javascript asynchronous error-handling try-catch

我简化了下面代码中的场景,因为我没有空间来解释我的用例,但基本上我是从 promise 的“catch” block 中抛出错误。如何从该 catch block 传递错误(在下面的示例中,我希望从我包装代码的“try/catch”的外部“catch” block 报告错误):

var p = new Promise(function(resolve, reject) {
  setTimeout(function() {
    reject();
  }, 1000);


});

try {
  p.then(function() {
    console.log('promise resolved');
  }).catch(function() {
    throw new Error('I want to get out of this catch block!');
  });
} catch (err) {
  console.log('I want to report the error from here' + err.message);
}

最佳答案

Promise 中的 catch 处理程序与 Promise 本身一样异步,因此您无法从它们恢复到同步流/异常控制。您传递给 .catch 的函数可能要等到其周围的 try/catch 退出之后才会被调用。

关于javascript - "throw new Error()"在 catch block 上下文中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37950855/

相关文章:

C - 调试断言失败 : _CrtIsValidHeapPointer(block)

error-handling - 您如何抛出Lua错误?

javascript - 定位模态窗口

javascript - 如何在图像后面显示信息?

javascript - React - 单击按钮从外部 API 函数获取

python - 编写异步 HTTP 库是否需要 Python 的 AsyncIO 协议(protocol)?

python - 在Python 2.6.6中使用pyopengl遇到麻烦

javascript - Play 框架 websocket 发生这种情况时不会向前端发送消息

javascript - 为什么 Promise.then() 中的代码没有被调用?

mysql - NodeJS 等待/异步与嵌套的 MySQL 查询