Junior — Middle
Kun je paniek binnen een defer-aanroep in Go vangen en afhandelen?
sobes.tech AI
Antwoord van AI
In Go kun je defer gebruiken om paniek te behandelen, maar de aanroep van defer zelf vangt de paniek niet op; je moet de paniek binnen de uitgestelde functie vangen met recover().
Voorbeeld:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Paniek gevangen en afgehandeld:", r)
}
}()
panic("er ging iets mis")
}
Hier wordt recover() binnen de uitgestelde functie aangeroepen en stelt het je in staat om de paniek die in safeCall plaatsvindt te vangen. Op deze manier kunnen paniek niet direct in defer worden gevangen, maar kunnen ze binnen de uitgestelde functie worden afgehandeld met recover().