Обработка ошибок
ysomad opened this issue · comments
У Вас в примерах Вы используете обертку ошибок с помощью fmt.Errorf()
, подскажите пожалуйста как можно возвращать ошибку пользователю, например, если ошибка возникла в слое репозитория и от нее зависит возвращаемый статус код и сообщение на клиент.
На данный момент ничего лучше, кроме как реализовывать ошибку с дополнительными полями не придумал, но у этого есть проблема, связанная с тем, что не все ошибки могут иметь сообщение, которое возвращается клиенту:
type appError struct {
err error
errType errorType
detail string
}
@ysomad
Как раз все сделано через fmt.Errorf("%w") чтобы решить и этот кейс.
На уровне "ручек" можно делать проверку по типу:
if errors.Is(err, sql.ErrNoRows) {
... // 404 записи нет
}
if errors.Is(err, service.ErrBizLogic) {
... // 400 бизнес логика
}
Получается "ручной" обработки ошибок в хендлерах не избежать) Хорошо, спасибо огромное и хорошего дня!