Обработка ошибок
Сохраняйте причину ошибки внутри системы и возвращайте безопасное объяснение наружу.
Проверено Изменено
Плохо
func persist(order Order) (*Order, error) {
result, _ := saveOrder(order)
return result, nil
}
Хорошо
func persist(order Order) (*Order, error) {
result, err := saveOrder(order)
if err != nil {
return nil, fmt.Errorf("save order: %w", err)
}
return result, nil
}
Почему это важно
Игнорирование ошибки создаёт ложный успех.
Когда применять
Не используйте panic для ожидаемой ошибки запроса. Преобразование внутренних причин в HTTP выполняется на границе.
Кто что делает
Человек
Определяет, какие ошибки можно показать пользователю и когда нужна эскалация.
AI-агент
Реализует правило в коде сервиса и проверяет ошибку, отмену и граничные входные данные.
Контроль результата:
- Сбой хранилища не возвращает успешный ответ?
Как проверить у себя
- Сбой хранилища не возвращает успешный ответ?
Первоисточники
История изменений на GitHubДата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.