Как точечно обрабатывать ошибки, прокинутые через несколько слоёв?

В Go добавляйте контекст через wrapping с %w, а причину проверяйте errors.Is или errors.As. Сравнение текста ошибки между слоями ненадёжно.

Короткий ответ

Что ответить на собеседовании

В Go добавляйте контекст через wrapping с %w, а причину проверяйте errors.Is или errors.As. Сравнение текста ошибки между слоями ненадёжно.

Подробный разбор

Ответ с пояснениями

В Go добавляйте контекст через wrapping с %w, а причину проверяйте errors.Is или errors.As. Сравнение текста ошибки между слоями ненадёжно.

errors.Is подходит для sentinel-ошибок, errors.As — для получения типизированной ошибки с данными. Каждый слой переводит только те случаи, за которые отвечает, сохраняя исходную причину, если это часть контракта. На внешней границе верните безопасный код и понятное сообщение, не раскрывая внутренние детали. Не логируйте одну ошибку многократно во всех слоях.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее