Sobes.tech
Junior — Middle

Explicați mecanismul de interacțiune dintre funcțiile panic, defer și recover în limbajul de programare Go.

sobes.tech AI

Răspuns de la AI

În Go, funcțiile panic, defer și recover sunt legate de gestionarea erorilor și situațiilor excepționale.

  • panic — provoacă terminarea bruscă a funcției curente și inițiază procesul de "panică", care se propagă pe stiva de apeluri, apelând funcțiile defer întârziate.
  • defer — amână executarea unei funcții până la ieșirea din funcția curentă, permițând efectuarea de curățări sau procesări după un panic.
  • recover — permite "prinderea" unui panic în interiorul unei funcții întârziate și prevenirea încheierii programului.

Exemplu:

func exemplu() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recuperat din panic:", r)
        }
    }()

    fmt.Println("Înainte de panic")
    panic("ceva nu a mers bine")
    fmt.Println("Aceasta nu va fi executată")
}

Aici, panic provoacă o eroare, defer cu recover o capturează, iar programul continuă să funcționeze fără să se prăbușească.