Sobes.tech
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.