Sobes.tech
Junior — Middle

Milyen következményeket várhatunk, ha egy gorutinban pánik történik?

sobes.tech MI

Válasz az MI-től

Ha egy goroutine-ban pánik (panic) történik, akkor az adott goroutine végrehajtása megszakad, és megkezdődik a verem (stack) kioldódási folyamat, amely során a defer-rel jelölt függvények hívódnak meg.

Ha a pánikot nem kezelik (például recover segítségével egy defer-ben), akkor az egész program befejeződik.

Fontos megérteni, hogy egy goroutine-ban keletkezett pánik nem befolyásolja közvetlenül a többi goroutine-t — azok tovább működnek, kivéve, ha a pánik az egész program leállításához vezet.

Pánik kezelés példája:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Pánik elfogva és kezelve:", r)
        }
    }()
    panic("valami rosszul sikerült")
}()