Sobes.tech
Junior — Middle

Go tilida evakuatsiya mexanizmi tushunchasi va uning maqsadini tushuntiring

sobes.tech AI

AIdan javob

Go tilida, evakuatsiya mexanizmi (panic va recover) dastur bajarilishi davomida kutilmagan xatoliklar va istisno holatlarni boshqarish uchun ishlatiladi.

  • panic — bu chaqiriq, u normal dastur bajarilishini to‘xtatadi, kechiktirilgan funksiyalar (defer) zanjirini ishga tushiradi va agar panic boshqarilmasa, dastur yakunlanadi.
  • recover — bu defer ichida chaqirilishi mumkin bo‘lgan funksiya bo‘lib, panikani ushlab, dastur yakunlanishini oldini oladi.

Mekanizmnining maqsadi:

  • Oddiy usullar bilan yoki qulay bo‘lmagan holda ishlov beriladigan kritik xatoliklarni boshqarish imkonini beradi.
  • Xatolikdan keyin tiklanish va dastur bajarilishini davom ettirish imkonini beradi.

Misol:

func safeDivide(a, b int) int {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panikadan keyingi tiklash:", r)
        }
    }()
    if b == 0 {
        panic("nolga bo‘lish")
    }
    return a / b
}

Bu yerda, nolga bo‘lishga urinishda, panic chaqiriladi, ammo recover yordamida dastur to‘xtamaydi va xato boshqariladi.