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.