DP
Size: a a a
МП
DP
AK
x
%w и ее позже хочется вытащить и че то с ней сделать.Is/As обёрнутую ошибку проверяем, мы же её с конкретной ошибкой сравниваем.x
AK
Is/As обёрнутую ошибку проверяем, мы же её с конкретной ошибкой сравниваем.var err error // Reason. More specific error. Database error for example.
wrongUserEmail := fmt.Errorf("Can't get specified user, reason: %w", err)
saveProfileInfoError := fmt.Errorf("Can't save profile info, reason: %w", err)
400 если ошибка произошла на этапе валидации. Не важно по какой именно причине (wrongUserEmail) 500 если ошибка произошла на этапе сохранения. Опять же причина дял пользователя не важна (saveProfileInfoError)?AK
fmt.Errorf вообще для этого не подходит. Нужно использовать кастомные типы ошибок. А у этой функции очень узкое назначение по сути...?PV
a := struct{}
doFunc(&a)a := &struct{}
doFunc(a)ВС
var err error // Reason. More specific error. Database error for example.
wrongUserEmail := fmt.Errorf("Can't get specified user, reason: %w", err)
saveProfileInfoError := fmt.Errorf("Can't save profile info, reason: %w", err)
400 если ошибка произошла на этапе валидации. Не важно по какой именно причине (wrongUserEmail) 500 если ошибка произошла на этапе сохранения. Опять же причина дял пользователя не важна (saveProfileInfoError)?ss
fmt.Errorf вообще для этого не подходит. Нужно использовать кастомные типы ошибок. А у этой функции очень узкое назначение по сути...?AK
AK
ВС
type HTTPError interface{
error
Code() int
ReturnText() string
}ВС
x
var err error // Reason. More specific error. Database error for example.
wrongUserEmail := fmt.Errorf("Can't get specified user, reason: %w", err)
saveProfileInfoError := fmt.Errorf("Can't save profile info, reason: %w", err)
400 если ошибка произошла на этапе валидации. Не важно по какой именно причине (wrongUserEmail) 500 если ошибка произошла на этапе сохранения. Опять же причина дял пользователя не важна (saveProfileInfoError)?RS
var err error // Reason. More specific error. Database error for example.
wrongUserEmail := fmt.Errorf("Can't get specified user, reason: %w", err)
saveProfileInfoError := fmt.Errorf("Can't save profile info, reason: %w", err)
400 если ошибка произошла на этапе валидации. Не важно по какой именно причине (wrongUserEmail) 500 если ошибка произошла на этапе сохранения. Опять же причина дял пользователя не важна (saveProfileInfoError)?ErrInvalidUsername = errors.New(“invalid username“)
func ValidateUsername(s string) error {
if s == “” {
return ErrInvalidUsername
}
return nil
}
func Foo(username string) error {
if err := Bar(); err != nil {
return fmt.Errorf(“executing bar: %w”, err)
}
if err := ValidateUsername; err != nil {
return fmt.Errorf(“validating username: %w”, err)
}
return nil
}
func HandleRequest() {
err := Foo(“newUsername”)
switch {
case errors.Is(err, ErrInvalidUsername):
return 400
case err != nil:
return 500
}
return 200
}RS
a := struct{}
doFunc(&a)a := &struct{}
doFunc(a)МП
ВС