我的 Azure 函数(Http 触发器)可能会失败。我还为其配置了 Application Insights。
如果出现错误(哪个更好):
Application Insight 能够记录异常。我真的不认为同时记录错误和抛出异常有什么意义。
指导方针是什么?什么是好的做法?
根据我使用 Python 构建 HTTP 触发的 azure 函数的经验,我注意到:当处理异常然后手动将某些内容返回给客户端时,您确实可以控制函数返回值,但框架将函数的工作标记为“成功” ,这使得在 Application Insights 中跟踪和监控变得更加困难。
对于你的问题,我最终得到了一个混合了 1 和 3 的 catch 子句 即一种混合方法,我尝试识别异常的起源,然后对于我的代码中的异常,我将其包装并返回 500,对于源自我正在使用的代码的其他异常,我重新抛出它们并让azure 函数框架返回 500 并将函数的作业标记为“失败”。
Azure Functions 中的错误处理指南记录在此处。具体
任何函数代码的最顶层都应包含 try/catch 块。在 catch 块中,您可以捕获并记录错误。 ...根据您的具体重试策略,您还可能引发新的异常以再次运行该函数。
我同意记录错误并抛出另一个错误似乎是多余的。出现新异常的可能原因是为了防止意外向调用者泄露详细信息。