Sobes.tech
Middle

Čo sa stane, ak spustíte goroutine a v nej zavoláte panic? Zastaví sa goroutine alebo sa zastaví celá aplikácia?

sobes.tech AI

Odpoveď od AI

Ak sa v goroutine vyskytne panic, táto konkrétna goroutine sa zastaví, ale celá aplikácia sa automaticky nezavrie. Panic v goroutine nespôsobí zastavenie všetkých goroutine alebo programu, pokiaľ nedosiahne úroveň koreňa a zostane nezpracovaný.

Aby ste predišli náhlemu ukončeniu aplikácie, môžete použiť recover v tej istej goroutine alebo v volajúcej funkcii, aby ste zachytili a spracovali panic.

Príklad:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Zachytený panic v goroutine:", r)
        }
    }()
    panic("niečo sa pokazilo")
}()

V tomto príklade panic nevedie k zastaveniu celej aplikácie, ale bude spracovaný vnútri goroutine.