Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="backend-errors"></a>

# Обработка ошибок

## Коротко

Сохраняйте причину ошибки внутри системы и возвращайте безопасное объяснение наружу.

## Плохо

```go
func persist(order Order) (*Order, error) {
    result, _ := saveOrder(order)
    return result, nil
}
```

## Хорошо

```go
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 выполняется на границе.

## Как проверить

- Сбой хранилища не возвращает успешный ответ?

## Человек

Определяет, какие ошибки можно показать пользователю и когда нужна эскалация.

## Агент

Реализует правило в коде сервиса и проверяет ошибку, отмену и граничные входные данные.

Контроль результата:

- Сбой хранилища не возвращает успешный ответ?

## Источники

- [Working with Errors in Go 1.13 - The Go Programming Language](https://go.dev/blog/go1.13-errors)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/backend/go/rules/errors.md)
