gpt4 book ai didi

javascript - 如何从被拒绝的外部 “throw”博克处理的被拒绝的 promise 中,如何在 “catch”方法内 “catch”?

转载 作者:行者123 更新时间:2023-12-03 07:52:29 25 4
gpt4 key购买 nike

,正在工作!

function rejectedPromise() {
return Promise.reject("ERROR");
}

async function someFunction() {
try {
rejectedPromise()
.catch((err) => console.log(err)); // IT WORKS ! THE ERROR IS BEING LOGGED HERE
}
catch(err) {
console.log(err);
}
}

someFunction();



不是。

function rejectedPromise() {
return Promise.reject("ERROR");
}

async function someFunction() {
try {
rejectedPromise()
.catch((err) => { throw err; }); // CAN'T I THROW HERE ?
}
catch(err) {
console.log(err); // DOES NOT WORK. THE ERROR SHOULD BE LOGGED HERE
}
}

someFunction();


问题

为什么?

注意:我的目标是对拒绝的Promise的 throw方法中的错误进行 catch并对其进行 throw,以便由外部 catch块处理。不知道这是否重要,但这是在 async函数内部发生的(无论如何我还是从示例中删除了 async关键字都行不通)。

额外:

在Node中,我得到了这个(即使有一个catch块):

UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)

最佳答案

如评论中所指出的,如果您在.catch()函数内部,则无需使用async。我不知道为什么要嵌套try...catch,但是看起来这可以实现您想要的:

function rejectedPromise() {
return Promise.reject("ERROR");
}

async function someFunction() {
try {
try {
await rejectedPromise()
}
catch(err) {
throw err;
}
}
catch(err) {
console.log(err);
}
}

someFunction();

关于javascript - 如何从被拒绝的外部 “throw”博克处理的被拒绝的 promise 中,如何在 “catch”方法内 “catch”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60667147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com