У меня есть функция Azure (триггер HTTP), которая может дать сбой. Я также настроил для него Application Insights.
В случае ошибки (что лучше):
- Перехватите исключение, оберните его дополнительной информацией и повторите его. (отправляет ответ 500) ИЛИ
- Поймать исключение, зарегистрировать его, обернуть, повторно передать вызывающему. (отправляет ответ 500) ИЛИ
- Перехватите исключение, зарегистрируйте его (не выбрасывайте), вручную отправьте ответ 500.
Application Insight может регистрировать исключения. Я действительно не вижу смысла в регистрации ошибки и одновременном исключении исключения.
Каковы рекомендации? Что такое хорошая практика?
1 ответ
Из моего опыта создания лазурной функции, запускаемой HTTP, с помощью Python, я заметил, что: при обработке исключений и последующем ручном возврате чего-либо клиенту у вас есть контроль над возвращаемым значением функции, но платформа помечает задание функции как «Успешное», что затем затрудняет отслеживание и мониторинг в Application Insights.
Что касается вашего вопроса, я получил предложение catch, которое смешивает 1 и 3, то есть гибридный подход, когда я пытаюсь определить источник исключения, затем для исключений из моего кода я упаковываю его и возвращаю 500, а для других исключений который возник из кода, который я использую, я повторно выбрасываю их и позволяю платформе функций Azure возвращать 500 и помечать задание функции как «Неудачное».
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.