Sobes.tech
Junior — Middle

Go'da defer ichida recover funksiyasidan foydalanishning nima uchun zarurati bor?

sobes.tech AI

AIdan javob

Go tilida, recover funksiyasi panic holatlarini ushlash va dasturning toqat qilmasdan yakunlanishini oldini olish uchun ishlatiladi. Biroq, recover faqat defer ichida chaqirilganda ishlaydi.

recoverni defer ichida ishlatish quyidagilarni imkonini beradi:

  • Xavfsiz tarzda panikni boshqarish, masalan, xatoni log qilish yoki resurslarni tozalash.
  • Mümkin bo'lsa, panikadan keyin dastur ishini davom ettirish.

Misol:

func safeFunction() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panikadan qutulish:", r)
        }
    }()
    // Panic chaqirishi mumkin bo'lgan kod
    panic("narsa noto'g'ri ketdi")
}

Agar recover defer tashqarisida chaqirilsa, u panikni ushlamaydi va dastur avariya bilan tugaydi. Shuning uchun, recover har doim defer ichida joylashtiriladi, to'g'ri holatlarni boshqarish uchun.