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")
}()