Middle
Co se stane, když spustíte goroutine a v ní zavoláte panic? Goroutine se zastaví nebo se zastaví celá aplikace?
sobes.tech AI
Odpověď od AI
Pokud dojde v gorutině k panic, tato konkrétní gorutina se zastaví, ale celá aplikace se automaticky nezavře. Panic v gorutině nezpůsobí zastavení všech gorutin nebo programu, pokud nedosáhne úrovně kořene a nezůstane nezpracovaný.
Aby se zabránilo náhlému ukončení aplikace, lze použít recover uvnitř téže gorutiny nebo v volající funkci, aby zachytil a zpracoval panic.
Příklad:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panic zachycen v gorutině:", r)
}
}()
panic("něco se pokazilo")
}()
V tomto příkladu panic nezpůsobí ukončení celé aplikace, ale bude zpracován uvnitř gorutiny.