Sobes.tech
Junior — Middle

Go dasturlash tilida panic, defer va recover funksiyalarining o'zaro ta'sir mexanizmini tushuntiring.

sobes.tech AI

AIdan javob

Go tilida, panic, defer va recover funksiyalari xatoliklarni boshqarish va istisno holatlari bilan bogʻliq.

  • panic — joriy funksiyani keskin yakunlaydi va "panik" jarayonini boshlaydi, bu jarayon chaqirishlar stekini yuqoriga qarab tarqaladi va kechiktirilgan defer funksiyalarini chaqiradi.
  • defer — funksiyaning bajarilishini joriy funksiyadan chiqishiga qadar kechiktiradi, bu panicdan keyin tozalash yoki ishlov berishni amalga oshirish imkonini beradi.
  • recover — kechiktirilgan funksiyada panikni "ushlash" va dastur yakunlanishini oldini olish imkonini beradi.

Misol:

func misol() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panikdan tiklandi:", r)
        }
    }()

    fmt.Println("Panikdan oldin")
    panic("narsa noto'g'ri ketdi")
    fmt.Println("Bu ishlamaydi")
}

Bu yerda, panic xato chaqiradi, defer bilan recover uni ushlaydi va dastur xatoliksiz davom etadi.