在 catch 块中抛出新错误不起作用
Throwing new error in catch block doesn't work
我正在做一些异步操作,我正在使用 Promise 的本机实现来控制执行流程:
Promise.resolve({})
.then(...)
.then(...)
.then(...)
.catch((error) => { throw new Error(error) });
没有抛出任何错误,但是当我更改为 console.log 时,一切正常。有什么想法吗?
谢谢!
promise 链中引发的异常只能在同一 promise 链中稍后用 catch 拦截。它不能在承诺链之外看到(如果这是你的意图。)在你的例子中,例外是 "lost"。但是,Chrome 和其他一些浏览器会检测到这种情况,并在控制台中发出未处理异常的警告。
有例外的正确承诺链应该是:
Promise.resolve({})
.then(...)
.then(() => { throw new Error(error); }) // throw exception here
.then(...)
.catch((error) => { /* handle error */ }); // catch it later in promise chain
.then(...)
.then(() => { throw new Error(error); }) // this exception is not caught later in the promise and is lost (shown as unhandled exception in some browsers)
我正在做一些异步操作,我正在使用 Promise 的本机实现来控制执行流程:
Promise.resolve({})
.then(...)
.then(...)
.then(...)
.catch((error) => { throw new Error(error) });
没有抛出任何错误,但是当我更改为 console.log 时,一切正常。有什么想法吗?
谢谢!
promise 链中引发的异常只能在同一 promise 链中稍后用 catch 拦截。它不能在承诺链之外看到(如果这是你的意图。)在你的例子中,例外是 "lost"。但是,Chrome 和其他一些浏览器会检测到这种情况,并在控制台中发出未处理异常的警告。
有例外的正确承诺链应该是:
Promise.resolve({})
.then(...)
.then(() => { throw new Error(error); }) // throw exception here
.then(...)
.catch((error) => { /* handle error */ }); // catch it later in promise chain
.then(...)
.then(() => { throw new Error(error); }) // this exception is not caught later in the promise and is lost (shown as unhandled exception in some browsers)