В 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 — для получения типизированной ошибки с данными. Каждый слой переводит только те случаи, за которые отвечает, сохраняя исходную причину, если это часть контракта. На внешней границе верните безопасный код и понятное сообщение, не раскрывая внутренние детали. Не логируйте одну ошибку многократно во всех слоях.