首页 > 解决方案 > 即使结果代码为 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 个状态代码视为失败(考虑到它们是内部服务器错误),但我的函数仍被认为已成功执行。考虑到这是一个对其上下文具有较高重要性的低容量功能,我将收到所有失败的通知。

做错误的明智之举是什么?我是否在这里抛出异常而不是简单地返回?

标签: typescriptazureazure-functions

解决方案


这是天蓝色功能状态检查的内部行为。

1 .如果您的代码通过使用处理错误try catch block并手动返回500,则azure函数将其视为成功。

2.但是如果错误没有被使用的代码处理try catch block,则会被标记为失败。

有关详细信息,请参阅此问题


推荐阅读