Junior — Middle
Paaiškinkite funkcijų panic, defer ir recover sąveikos mechanizmą programavimo kalboje Go.
sobes.tech AI
Atsakymas iš AI
Go kalboje funkcijos panic, defer ir recover yra susijusios su klaidų valdymu ir išimtinėmis situacijomis.
panic— sukelia dabartinės funkcijos staigų pabaigą ir pradeda "panikos" procesą, kuris plinta per iškvietimų steką ir kviečia atidėtasdeferfunkcijas.defer— atideda funkcijos vykdymą iki išėjimo iš dabartinės funkcijos, leidžiant atlikti valymą ar apdorojimą popanic.recover— leidžia "pagauti"panicviduje atidėtoje funkcijoje ir išvengti programos užbaigimo.
Pavyzdys:
func pavyzdys() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Atstatyta nuo panikos:", r)
}
}()
fmt.Println("Prieš paniką")
panic("kažkas nepavyko")
fmt.Println("Tai nebus vykdoma")
}
Čia, panic sukelia klaidą, defer su recover ją pagauja ir programa tęsia darbą be avarijos.