Sobes.tech
Junior — Middle

Goroutine-də panika baş verərsə, hansı nəticələr gözlənilməlidir?

sobes.tech Süni İntellekt

AI-dan cavab

Əgər gorutində panika (panic) baş verərsə, bu gorutinin icrası dayandırılır və stack unwinding prosesi başlayır, bu zaman defer ilə təyin olunmuş funksiyalar çağırılır.

Əgər panika (məsələn, recover istifadə edilərək) idarə olunmazsa, bu bütün proqramın bağlanmasına səbəb olar.

Əhəmiyyətli olan, bir gorutindəki panikanın digər gorutinə birbaşa təsir etmədiyini başa düşməkdir — onlar işləməyə davam edir, yalnız panika bütün proqramın dayanmasına səbəb olarsa.

Panika idarəetmə nümunəsi:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panika tutuldu və idarə olundu:", r)
        }
    }()
    panic("nəsə səhv getdi")
}()