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)
МП
ВС