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