我遇到这样的情况:
let obj = new MyObj()
obj.init()
.then(async () => {
try {
const items = await obj.getItems()
} catch(error) {
console.log(error.message)
}
})
然后是getItems:
getItems() {
let items = []
this.itemIdList.forEach(async id => {
try {
const itemInfoList = await this.getItemInfo(id)
if(itemInfoList) {
itemInfoList.forEach(item => {
items.push(item.name)
})
}
} catch(error) {
//can't do this: throw error
console.log(error.message
}
})
return items
}
如果从this.getItemInfo(id)的调用中引发了异常,则该异常将被正确处理并被捕获。但是,如果我希望外部承诺处理该错误,我以为我可以重新抛出该错误(如您在上面的注释中看到的那样),但是我仍然会收到UnhandledPromiseRejection异常,并且永远不会被捕获。当我删除“抛出错误”时,异常被压缩(当然),并且外部承诺将永远不会看到该错误。我该如何处理从内部到外部的所有异常?