Sobes.tech
Junior — Middle

Go proqramlaşdırma dilində panic, defer və recover funksiyalarının qarşılıqlı əlaqə mexanizmini izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, panic, deferrecover funksiyaları səhvlərin idarə olunması və istisna vəziyyətləri ilə əlaqəlidir.

  • panic — cari funksiyanın qəfil sonlanmasına səbəb olur və "panik" prosesini başlatır, bu proses çağrı yığını boyunca yuxarı doğru yayılır və gecikdirilmiş defer funksiyalarını çağırır.
  • defer — bir funksiyanın icrasını cari funksiyadan çıxışa qədər təxirə salır, bu da panic sonrası təmizləmə və ya emal üçün imkan yaradır.
  • recover — gecikdirilmiş funksiyada paniki "yaxalamağa" və proqramın bağlanmamasına imkan verir.

Nümunə:

func nümunə() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panikdən bərpa olundu:", r)
        }
    }()

    fmt.Println("Panikdən əvvəl")
    panic("nəsə səhv getdi")
    fmt.Println("Bu işləməyəcək")
}

Burada, panic bir xətanı çağırır, defer ilə recover onu tutar və proqram çökmədən işləməyə davam edir.