【发布时间】:2020-09-19 23:08:52
【问题描述】:
考虑以下用 nodejs 编写的 AWS lambda 函数。
export const handler: APIGatewayProxyHandler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {
var file;
await getFile()
.then((filedata): void => {
file = filedata;
}).catch((e): void => {
< Return error response and stop execution >
});
await saveFile(file)
.then((result): void => {
}).catch((e): void => {
< Return error response and stop execution >
});
return {statusCode: 200};
};
如果 getFile 失败,我希望 lambda 函数只返回错误并停止执行。
我无法从 .catch 语句返回响应,因为它位于错误的范围内。
我可以用 try/catch 包围整个处理程序,并从 .catch 语句中抛出一个错误,如下所示:
try {
await getFile()
.then((filedata): void => {
file = filedata;
}).catch((e): void => {
throw new Error("Error getFile");
});
await saveFile(file)
.catch((e): void => {
throw new Error("Error saveFile");
});
return {statusCode: 200, body: "success"};
} catch (error) {
return {statusCode: 500, body: error.message};
}
...但我认为有更好的方法?
你会怎么做?
感谢您的帮助!
【问题讨论】:
标签: javascript node.js typescript amazon-web-services aws-lambda