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.