Sobes.tech
Middle

Go'da panik/recover (panic/recover) qanday ishlaydi?

sobes.tech AI

AIdan javob

Go tilida panic/recover mexanizmi istisnoiy holatlarni boshqarish uchun ishlatiladi.

  • panic joriy goroutine ning kutilmagan yakunlanishiga olib keladi va "panik" jarayonini boshlaydi, bu jarayonda chaqirishlar steki (stack) yopiladi.
  • Stack yopilayotganda, kechiktirilgan funksiyalar (defer) chaqiriladi.
  • Agar kechiktirilgan funksiyada recover() chaqirilsa, panikani ushlash va dastur yakunini oldini olish mumkin.

recover() panic() ga yuborilgan qiymatni qaytaradi, agar u kechiktirilgan funksiyada panika vaqtida chaqirilsa. Agar kechiktirilgan funksiyadan tashqarida yoki panika bo'lmasa, nil qaytaradi.

Misol:

func safeCall() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panika ushlanadi:", r)
        }
    }()

    panic("narsa noto'g'ri ketdi")
}

Shunday qilib, panic xatolikni boshlaydi, va recover uni boshqarish va dastur ishini davom ettirish imkonini beradi.