Junior — Middle
Se poate captura și trata panicile în interiorul unui apel defer în Go?
sobes.tech AI
Răspuns de la AI
În Go, poți folosi defer pentru a trata panicile, dar apelul la defer în sine nu capturează panicile; trebuie să le capturezi în interiorul funcției întârziate folosind recover().
Exemplu:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panic capturat și tratat:", r)
}
}()
panic("ceva nu a mers bine")
}
Aici, recover() este apelat în interiorul funcției întârziate și permite capturarea panicii apărute în safeCall. Astfel, panicile nu pot fi "capturate" direct în defer, dar pot fi gestionate în interiorul funcției întârziate cu recover().