Junior — Middle
Da li je moguće uhvatiti i obraditi panike unutar poziva defer u Go?
sobes.tech АИ
Одговор од АИ
U jeziku Go možete koristiti defer za rukovanje panikama, ali poziv defer sam po sebi ne hvata paniku; treba je uhvatiti unutar funkcije odložene pomoću recover().
Primer:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Uhvaćena i obrađena panika:", r)
}
}()
panic("nešto je pošlo po zlu")
}
Ovde se recover() poziva unutar odložene funkcije i omogućava hvatanje panike koja se dogodila u safeCall. Na taj način, panike ne mogu biti "uhvaćene" direktno u defer, ali ih je moguće obraditi unutar odložene funkcije pomoću recover().