Как правильно обрабатывать ошибки для функций Azure v2, запускаемых по протоколу HTTP?Должны ли - как рекомендуется в этом ответе - все внутренние исключения быть перехваченными и ничего не выдаваться?
Т.е. всегда окружать все, что вы делаете внутри своей функции, try-catch, например так:
[FunctionName("DemoHttpFunction")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req, ILogger log)
{
try
{
await InnerDoSomething();
return new NoContentResult();
}
catch(Exception ex)
{
log.LogError(ex, "Something went wrong");
return new StatusCodeResult(500);
}
}
Недостатки, которые я вижу, это
- . Сообщение об ошибке вообще не возвращается пользователю.
StatusCodeResult
не предоставляет никакой перегрузки для предоставления сообщения - Все выполнения вашей функции будут показаны как успешные, например, при входе в Application Insights.