typescript - 即使结果代码为 500,Azure 函数成功状态也为真
问题描述
我有一个 azure 函数,其中包含一些带有非常基本的 try catch 的逻辑(为简洁起见缩短了代码)
try {
// do logic here that can potentially fail
} catch (ex) {
context.log(`Log details about the exception: ${ex.message}`);
context.res = {
status: 500,
headers: {
"Content-Type": "application/json"
},
body: {
message: ex.message
}
};
return;
}
因此,如果在该逻辑期间发生异常,我会处理异常并优雅地返回 http 响应并终止应用程序。我希望 azure 函数会将 500 个状态代码视为失败(考虑到它们是内部服务器错误),但我的函数仍被认为已成功执行。考虑到这是一个对其上下文具有较高重要性的低容量功能,我将收到所有失败的通知。
做错误的明智之举是什么?我是否在这里抛出异常而不是简单地返回?
解决方案
这是天蓝色功能状态检查的内部行为。
1 .如果您的代码通过使用处理错误try catch block
并手动返回500,则azure函数将其视为成功。
2.但是如果错误没有被使用的代码处理try catch block
,则会被标记为失败。
有关详细信息,请参阅此问题。