gpt4 book ai didi

javascript - TryCatch 装饰器没有捕获错误

转载 作者:搜寻专家 更新时间:2023-11-01 00:16:33 27 4
gpt4 key购买 nike

下面的tryCatch装饰器无法捕捉到错误。

const TryCatchWrapper = (target, key, descriptor) => {
const fn = descriptor.value;
descriptor.value = (...args) => {
try {
fn.apply(this, args);
} catch (error) {
console.log('Entered Catch----->');
const [,, next] = args;
next(error);
}
};
};

尝试在下面的类中使用-

class CustomerDetails {

@TryCatchWrapper
async getCustomerSummary(req, res, next) {
throw new Error('Whoops!!!');
}
}

问题:-'Entered Catch----->' 永远不会被打印出来。

最佳答案

这是因为 getCustomerSummary 是一个 async 函数。 async 函数从不 抛出;相反,它返回一个被拒绝的 promise 。 ( async 函数中,当您在 await 周围使用 try/catch 时,这变成了 promise 拒绝处理。但是在调用 async 函数的非 async 函数中,不应用该糖分。)

您需要修 retrofit 饰器以查看函数的返回值,如果是 promise ,则处理 promise 拒绝。

关于javascript - TryCatch 装饰器没有捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47567644/

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