Sobes.tech
Junior — Middle

Koja je potreba za korišćenjem funkcije recover unutar defer u Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go, funkcija recover se koristi za hvatanje panic i sprečavanje naglog završetka programa. Međutim, recover radi samo ako se pozove unutar odložene funkcije (defer).

Korišćenje recover unutar defer omogućava:

  • Sigurno rukovanje panikom, na primer, beleženjem greške ili čišćenjem resursa.
  • Nastavak izvršavanja programa nakon panike, ako je to moguće.

Primer:

func safeFunction() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Oporavak od panike:", r)
        }
    }()
    // Kod koji može izazvati panic
    panic("nešto je pošlo po zlu")
}

Ako se recover pozove van defer, neće uhvatiti paniku i program će se neočekivano završiti. Zato se recover uvek stavlja unutar defer za ispravno rukovanje izuzetnim situacijama.