gpt4 book ai didi

javascript - 如何在没有 try/catch block 的情况下使用异步 lambda 并仍然具有自定义错误消息?

转载 作者:行者123 更新时间:2023-11-28 16:50:05 25 4
gpt4 key购买 nike

我试图避免将所有等待的调用包装在带有 try catch 的异步 lambda 中。我想捕获并发送自定义错误响应,但与 .catch() 相比,将每个等待的调用包装在 try/catch 中在语法上很难看。有没有办法做这样的事情:

exports.hanlder = async (event, context, callback) => {
const foo = await bar(baz).catch((error) => {
eventResponse.statusCode = 503;
eventResponse.body = JSON.stringify({ message: 'unable to bar' , error});
// normally we'd callback(null, eventResponse)
});

没有像这样包裹在 try/catch 中吗?

exports.hanlder = async (event, context, callback) => {
let foo;
try {
foo = await bar(baz);
} catch (error) {
eventResponse.statusCode = 503;
eventResponse.body = JSON.stringify({ message: 'unable to bar', error});
return eventResponse;
}
// then do something else with foo

if (foo.whatever) {
// some more async calls
}

一旦你在一个 lambda 中有大约 7 个等待调用,那么有一堆 try/catch 就不太好了。有没有更漂亮的方法使用内置的 .catch() 来做到这一点?

最佳答案

The .catch() method is compatible with async/await如果你想重新抛出异常,通常不会那么难看。我认为您正在寻找

exports.handler = async (event, context, callback) => {
try {
const foo = await bar(baz).catch(error => {
throw {message: 'unable to bar', error};
});
// do something with `foo`, and more `await`ing calls throwing other errors
// return a response
} catch(err) {
eventResponse.statusCode = 503;
eventResponse.body = JSON.stringify(err);
return eventResponse;
}
};

关于javascript - 如何在没有 try/catch block 的情况下使用异步 lambda 并仍然具有自定义错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60046674/

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