Про AutoDevOps https://confluence.rt.ru/pages/viewpage.action?pageId=560548377

Skip to content

Error refactor

Evgeniy Goryachev requested to merge error_refactor into main

Зачем:

  • чтобы со стороны клиента сервиса сразу в SDK видеть какие ошибки у метода возможны и их структуру
  • чтобы удобно их обрабатывать на стороне клиента
  • Чтобы найти в специфичной ошибке всю инфу о ней
  • чтобы удобно выкидывать ошибку на стороне сервера
  • что бы аналитик мог заводить ошибки в спецификации сам
  • для возможности программной обработки ошибок сервисов

Поскольку ошибки специфичны для метода, то и ошибки специфичного класса Принципы реализации: В респонсах методов описываем Error специфичный для метода. в Error обязательно request_id, occurred_at серверрный timestamp и специфичный Reason - oneof набор вариантов ошибок, характерных для конкретного метода ошибки могут быть описаны

  • в объекте (DTO), если специфичны для объекта
  • в респонсе, если специфична для метода
  • в общей Error, если она для нескольких методов в специфичной ошибке reason произвольный набор полей, специфичный для ошибки, или вовсе нет полей не должно быть полей ...Exception... - исключения остаются внутри реализации, а не в протоколе.

Убрал UnknownException. UnknownError внутри специфичной причины можно убрать, если она не возникает ни в каком языке UnknownError внутри специфичной причины можно оставить, в языках где она не возникает не обращать на нее внимание

  • Поменял exception на error
  • Убрал лишние описания ошибок, которые не использовались
  • перенес SaveSubscriptionError в Subscription, поскольку нехорошо ссылаться из Subscription на SaveSubscriptionResponse. Объект не должен ничего знать про методы
Edited by Petr Vasilev

Merge request reports