Исходный код вики Об обработке ошибок

Версия 11.12 от Alexandr Fokin на 2024/02/11 14:27

Скрыть последних авторов
Alexandr Fokin 11.2 1 |1|(% style="width:256px" %)Введение типов ошибок.|(% style="width:1208px" %)(((
2 Наличие регламента типов ошибок.
3 Как минимум обычно можно выделить - технические ошибки и ошибки валидации входных данных (а также ошибки валидации недопустимых действий).
Alexandr Fokin 1.1 4 В целом модель типов ошибок может быть более сложной.
5
Alexandr Fokin 11.2 6 Это также позволит реализовать различную логику в зависимости от типа ошибки.
Alexandr Fokin 1.1 7
Alexandr Fokin 11.2 8 Дополнительно: спорный вопрос использования механизма [[Exception>>doc:Разработка.NET.C#.Исключения | Exception .WebHome]] для передачи ошибок валидации входных данных.
9 )))
10 |2|(% style="width:256px" %)Политика обработки ошибок.|(% style="width:1208px" %)При разработке приложение желательно определить политики того, как и какие ошибки мы будем передавать и перехватывать.
11 На каком (их) уровне будет вестись обработка и принятие решений о поведении в случае ошибки.
12 |3|(% style="width:256px" %)Реагирование на ошибки в рамках жизненного цикла запроса / работы.|(% style="width:1208px" %)Также важно понимать как ошибки влияю на жизненный цикл обработки запроса в нашем приложении. Какие ошибки являются критичными, а какие говорят о необходимости выполнить альтернативное или повторное действие.
13 |4|(% style="width:256px" %)Логирование ошибок|(% style="width:1208px" %)(((
14 Не должно быть ситуации, когда данные о технических ошибках просто теряются, не попав в лог.
15 За исключением того, если определен перечень допустимых ошибок (наличие обоснования).
Alexandr Fokin 1.1 16
Alexandr Fokin 11.2 17 Дополнительный вопрос: Достаточно ли хранимой и логируемой информации для понимания причины ошибки, воспроизведения ее на тестовом окружении?
18 )))
19 |5|(% style="width:256px" %)Примеры и вопросы|(% style="width:1208px" %)(((
Alexandr Fokin 11.4 20 |(% style="width:273px" %)У нас есть Web Api, обрабатывающее входные запросы.|(% style="width:916px" %)(((
Alexandr Fokin 11.2 21 Учтены ли в контракте API ситуации, когда запрос завершается ошибкой (причем также могут допускаться разные типы), отражено ли это в формате ответа.
Alexandr Fokin 11.8 22 (Ошибка валидации входного запроса (с указанием места ошибки), внутренняя техническая ошибка сервиса, перегрузка сервиса, невозможность обработать запроса из-за недоступность необходимых сервисов).
Alexandr Fokin 2.1 23
Alexandr Fokin 11.2 24 Исходя из требований и ситуации: Насколько информативным должен быть текст ответа API в случае ошибки валидации входных данных. Проверяются ли входные данные целиком или же обработка прекращается при нахождении первого недопустимого элемента?
25 )))
Alexandr Fokin 11.4 26 |(% style="width:273px" %)У нас есть входная очередь и воркер, выполняющий чтение и обработку.|(% style="width:916px" %)(((
Alexandr Fokin 11.3 27 Существуют ли какие либо ошибки, возникновение которых должно приводить к тому, что мы перестаем извлекать новые сообщения, останавливая обработку (например до наступления какого-то события), или же воркер в любом случае должен переходить к обработке следующего сообщения? Сохранение информации о проблемном сообщении (сообщение привело к появлению ошибки).
Alexandr Fokin 5.1 28
Alexandr Fokin 11.5 29 В некоторых случаях может возникнуть вопрос необходимости периодической проверки доступности других сервисов или даже БД. И в случае недоступности менять поведение или останавливать обработку.
Alexandr Fokin 11.2 30 )))
Alexandr Fokin 11.10 31 |(% style="width:273px" %) |(% style="width:916px" %)В некоторых случаях возможно понадобиться учесть ситуацию, когда запрос к внешнему сервису завершен успешно, но при попытке сохранения агрегата возникает ошибка. Должно ли это приводить к каким либо последствиям (Фиксация информации о проблеме, блокировка агрегата до дальнейшего выяснения)
Alexandr Fokin 11.2 32 )))
Alexandr Fokin 11.6 33
Alexandr Fokin 11.12 34 |(% style="width:276px" %)Техническая|(% style="width:1208px" %)Exception или некая явная ошибка.
35 |(% style="width:276px" %) |(% style="width:1208px" %)Ситуация, когда в рамках обработки действия или процесса все было выполнено успешно. Но с точки зрения бизнеса, что-то произошло некорректно.
36 Т.е. можно сказать, что система принятия решений (условий) не учитывала такой вариант или сработала неучтенным образом. Также вопрос на каких данных основывалась решения делая каждый выбор (условие).
37
Alexandr Fokin 11.6 38 ----
39
Alexandr Fokin 11.7 40 [[Логи, трассировка, мониторинг>>doc:Разработка.Логи, трассировка, мониторинг.WebHome]]
41
Alexandr Fokin 11.6 42 [[Open Telemetry>>doc:Разработка.Логи, трассировка, мониторинг.Open Telemetry.WebHome]]