Sobes.tech
Middle

Ce se întâmplă dacă pornești o goroutine și în ea apelezi panic? Goroutine-ul se va opri sau se va opri întreaga aplicație?

sobes.tech AI

Răspuns de la AI

Dacă apare un panic într-o goroutine, această goroutine în particular se va opri, dar întreaga aplicație în ansamblu nu se va închide automat. Panica într-o goroutine nu duce la oprirea tuturor goroutine-urilor sau a programului, cu excepția cazului în care ajunge la nivelul rădăcină și rămâne neprocesată.

Pentru a evita închiderea neașteptată a aplicației, poți folosi recover în aceeași goroutine sau în funcția care o apelează, pentru a captura și trata panicile.

Exemplu:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panic capturat în goroutine:", r)
        }
    }()
    panic("ceva a mers prost")
}()

În acest exemplu, panic-ul nu va duce la oprirea întregii aplicații, ci va fi gestionat în interiorul goroutine-ului.