Sobes.tech
Junior — Middle

Kuo reikalinga recover funkcijos naudojimas defer viduje Go?

sobes.tech AI

Atsakymas iš AI

Go kalboje funkcija recover naudojama panic sugavimui ir programos netikėtam užbaigimui išvengti. Tačiau, recover veikia tik tada, kai ji yra iškviesta viduje atidėtos funkcijos (defer).

recover naudojimas defer viduje leidžia:

  • Saugiai tvarkyti paniką, pavyzdžiui, įrašyti klaidą arba išvalyti išteklius.
  • Tęsti programos vykdymą po panikos, jei tai įmanoma.

Pavyzdys:

func safeFunction() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Atsigavimas nuo panikos:", r)
        }
    }()
    // Kodas, kuris gali sukelti panic
    panic("kažkas nepavyko")
}

Jei recover iškviesite už defer, ji nepagaus panikos, ir programa netikėtai užbaigs darbą. Todėl recover visada turi būti įdėta į defer, kad būtų tinkamai tvarkomos išimtys.