82 / 103

Errors

Xatolar

Go dasturlari xato holatini error qiymatlari orqali ifodalaydi.

error tipi — fmt.Stringer ga o'xshash o'rnatilgan interface:

example.go
type error interface {
    Error() string
}

(fmt.Stringer kabi, fmt paketi qiymatlarni chiqarayotganda error interface'ini qidiradi.)

Funksiyalar ko'pincha error qiymatini qaytaradi, chaqiruvchi kod esa error nil ga teng yoki teng emasligini tekshirib, xatolarni qayta ishlashi kerak.

example.go
i, err := strconv.Atoi("42")
if err != nil {
    fmt.Printf("raqamni o'zgartirib bo'lmadi: %v\n", err)
    return
}
fmt.Println("O'zgartirilgan butun son:", i)

nil error — muvaffaqiyatni, nil bo'lmagan error esa muvaffaqiyatsizlikni bildiradi.

Topshiriqlar

Yechimni kodning pastki qismidagi Topshiriqlar bo'limiga yozing, so'ng Submit tugmasini bosing. Mavzu mustahkam o'zlashishi uchun ikkala topshiriqni ham bajaring.

1-topshiriq

Bol(a, b float64) (float64, error) funksiyasini yozing: b == 0 bo'lsa 0 va xato (fmt.Errorf("nolga bo'lib bo'lmaydi")), aks holda a / b va nil qaytarsin. Chaqiruvchi xatoni err != nil bilan tekshiradi.

2-topshiriq

ManfiyXato (tayyor) tipiga Error() string metodini bering: "manfiy qiymat: <son>" qaytarsin. So'ng Tekshir(n int) error funksiyasini yozing: n < 0 bo'lsa &ManfiyXato{n}, aks holda nil qaytarsin.