Sobes.tech
Middle — Middle+

Recoverdan foydalanish kontekstida tizimni tiklash mexanizmini tushuntiring.

sobes.tech AI

AIdan javob

Go tilida recover mexanizmi panic holatlarini ushlash va dasturning odatdagi bajarilishini tiklash uchun ishlatiladi. Bu tizimga xatolikdan keyin to'xtab qolmasdan, xatoni boshqarish va ishlashni davom ettirish imkonini beradi.

Asosiy g'oya:

  • Panic yuzaga kelganda, funktsiyalar bajarilishi to'xtatiladi va stackni ochish boshlanadi.
  • Agar chaqirilgan funktsiyalardan birida, defer bilan chaqirilgan va recover() ni chaqiradigan chaqiriq bo'lsa, u panicni ushlaydi va xato qiymatini qaytaradi.
  • Keyinchalik, dastur xatoni boshqarishi va bajarishni davom ettirishi mumkin.

Misol:

func safeDivide(a, b int) int {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panikadan keyingi tiklash:", r)
        }
    }()
    return a / b // agar b == 0 bo'lsa, panic yuzaga keladi
}

func main() {
    fmt.Println(safeDivide(10, 2)) // 5
    fmt.Println(safeDivide(10, 0)) // Panikadan keyingi tiklash: runtime error: integer divide by zero
}

Shu tarzda, recover tizimni kutilmagan xatolarga qarshi chidamli qilishga yordam beradi va to'xtashni oldini oladi.