Junior — Middle
Ce consecințe trebuie așteptate dacă are loc o panică în goroutine?
sobes.tech AI
Răspuns de la AI
Dacă apare o panică (panic) într-o goroutine, execuția acestei goroutine este întreruptă, iar procesul de dezambalare a stivei (stack unwinding) începe, în timpul căruia sunt apelate funcțiile deferred (defer).
Dacă panica nu este gestionată (de exemplu, cu recover într-o funcție deferred), aceasta va duce la încheierea întregii programe.
Este important să înțelegeți că o panică într-o goroutine nu afectează direct alte goroutines — acestea continuă să funcționeze, cu excepția cazului în care panica duce la oprirea întregii programe.
Exemplu de gestionare a panicii:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panica capturată și gestionată:", r)
}
}()
panic("ceva nu a mers bine")
}()