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