В многослойном Go-сервисе легко случайно пропустить наверх ошибки хранения данных (например, sql.ErrNoRows) вплоть до самых обработчика HTTP или gRPC и это приводит к связыванию транспортного уровня с деталями реализации базы данных.
Чтоб такого не случалось нужно определить доменные ошибоки (например user.ErrNotFound и user.ErrConflict) на границе сервиса и их трансляции в репозиториях: специфичные для БД ошибки перехватываются и заменяются доменными sentinel-ошибками. В результате транспортные обработчики работают только с доменными ошибками, преобразуя их в соответствующие HTTP или gRPC статусы (404, 409, 500), не импортируя пакеты БД
23.04.2026
Похожее
21.07.2026
OpenTelemetry в комптайме
Разрабы OpenTelemetry объявили о первом стабильном релизе Go Compile-Time Instru...
19.07.2026
Объединение запросов
Статья объясняет технику объединения запросов на Go с помощью пакета singlefligh...
16.07.2026
mmap или pread
Автор статьи - инженер из VictoriaMetrics. На примере реального движка хранения ...
16.07.2026
TypeScript переписали на Go
Команда Microsoft с помощью AI переписала компилятор TypeScript 7.0 на Go, а не ...