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