Sobes.tech
Junior — Middle

Go tilida istisnolar (Exception) nima ekanligini bilasizmi?

sobes.tech AI

AIdan javob

Go tilimida an'an'ava (Exception) an'an'ava yo'q, Java yoki Python kabi. O'rniga, Go xatoliklarni boshqarish uchun qaytariladigan qiymatlarni ishlatadi: funksiya xatolik qiymatini (error) qaytaradi va uni tekshirish kerak.

Ammo, Go'da panik (panic) va recover (qaytarish) mexanizmi mavjud bo'lib, uni xatoliklar uchun analog sifatida ko'rish mumkin, lekin u kritik xatoliklar uchun mo'ljallangan va odatiy xatoliklarni boshqarish uchun ishlatilmasligi kerak.

Go'da xatoliklarni boshqarish misoli:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("nolga bo'lish")
    }
    return a / b, nil
}

natija, err := divide(10, 0)
if err != nil {
    fmt.Println("Xato:", err)
} else {
    fmt.Println("Natija:", natija)
}

Panik/recover ishlatish:

func mayPanic() {
    panic("narsalar yomon ketdi")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panikdan keyin tiklandi:", r)
        }
    }()
    mayPanic()
    fmt.Println("Bu kod bajarilmaydi")
}