Никаких happy path! Рассказ о том, как нам перестало хватать баннера «Что-то пошло не так» и как мы учились сообщать пользователю об ошибках во время выполнения запроса в системе хранения данных. Мы рассмотрим средства для работы с ошибками в Go, чем они хороши и что делать, если на пути встает сериализация.
Внедрили свой формат ошибок для общения между сервисами, оформили ее в библиотеку и решили следующие проблемы:
* как определять ошибку, если HTTP-кодов уже не хватает;
* как добавить в ошибку параметры, чтобы показать детали проблемы, и как ее локализовать;
* как интерпретировать ошибки одного API для другого и не сойти с ума;
* как по ходу дела приручить панику, заложить стандарт для ошибок и отрефакторить кучу кода.