Middle
Kas nutiks, jei paleisite goroutine ir joje iškelsite panic? Ar goroutine sustos ar visa programa?
sobes.tech AI
Atsakymas iš AI
Jei gorutinoje įvyksta panic, tai ši konkreti gorutina sustos, tačiau visa programa bendrai automatiškai neužsidarys. Panika gorutinoje nesukels visų gorutinų ar programos sustojimo, jei ji nepasieks šaknies lygio ir liks neišspręsta.
Norint išvengti netikėto programos uždarymo, galima naudoti recover toje pačioje gorutinoje arba kviečiančioje funkcijoje, kad sugautumėte ir apdorotumėte paniką.
Pavyzdys:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Gorutinoje sugauta panika:", r)
}
}()
panic("kažkas nepavyko")
}()
Šiame pavyzdyje panika nesukels visos programos sustojimo, ji bus apdorota gorutinoje.