Найти в Дзене
147 подписчиков

🔨ошибки: почему всё выглядит просто… пока не начинаешь писать свой код


После основ большинство думает, что ошибки — это что‑то второстепенное.
Тип error есть, где‑то он возвращается — и ладно.

Но как только пишешь свой первый проект, всё резко меняется.

Например, у тебя есть функция, которая что‑то делает:
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("bad input")
}
return a / b, nil
}

А в main ты видишь:
result, err := divide(10, 0)
if err != nil {
fmt.Println("failed")
}
И всё.
failed
Что упало? Где? Почему?
Что за bad input? Какой именно вход? Где искать проблему?

Это реальная боль после основ: ошибки есть, но пользы от них ноль.

Как сделать минимально лучше — и сразу полезнее
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("divide: b=0 is invalid")
}
return a / b, nil
}

func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(result)
}
Теперь вывод будет таким:
error: divide: b=0 is invalid

И сразу понятно:
— что делали → делили числа
— где ошибка → в функции divide
— почему → b = 0

Минимальное изменение — а ясности в разы больше❤️

#GoПрактика
🔨ошибки: почему всё выглядит просто… пока не начинаешь писать свой код  После основ большинство думает, что ошибки — это что‑то второстепенное. Тип error есть, где‑то он возвращается — и ладно.
Около минуты