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.