Junior — Middle
Care este necesitatea utilizării funcției recover în interiorul defer în Go?
sobes.tech AI
Răspuns de la AI
În Go, funcția recover este utilizată pentru a captura panic-urile (panic) și pentru a preveni terminarea bruscă a programului. Cu toate acestea, recover funcționează numai dacă este apelată din interiorul unei funcții deferred (defer).
Utilizarea recover în interiorul defer permite:
- Tratarea în siguranță a panic-urilor, de exemplu, înregistrarea erorilor sau curățarea resurselor.
- Continuarea execuției programului după un panic, dacă este posibil.
Exemplu:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recuperat din panic:", r)
}
}()
// Cod care poate provoca panic
panic("ceva nu a mers bine")
}
Dacă se apelează recover în afara lui defer, nu va prinde panic-ul, iar programul se va termina brusc. De aceea, recover trebuie întotdeauna plasat în interiorul defer pentru o gestionare corectă a situațiilor excepționale.