Junior — Middle
Механизми ҳамкории функсияҳои panic, defer ва recover дар забони барномасозии Go-ро шарҳ диҳед.
sobes.tech AI
Ҷавоб аз AI
Дар Go, функсияҳои panic, defer ва recover бо идоракунии хатоҳо ва ҳолатҳои истисноӣ алоқаманданд.
panic— ба анҷоми ногаҳонии функсияи ҳозира сабаб мешавад ва равандрои "паника"-ро оғоз мекунад, ки дар зери стеки даъватҳо паҳн мешавад ва функсияҳоиdefer-и таъхирдоштаро даъват мекунад.defer— иҷрои функсияро то баромадан аз функсияи ҳозира таъхир мекунад, ки имкон медиҳад тозакунӣ ё коркард пас азpanicанҷом дода шавад.recover— имкон медиҳад, ки дар дохили функсияи таъхирдоштаро "гирд" карда, ба барнома қатъ накунад.
Масалан:
func намуна() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Аз panic барқарор шуд:", r)
}
}()
fmt.Println("Пеш аз panic")
panic("як чиз нодуруст шуд")
fmt.Println("Ин иҷро намешавад")
}
Ин ҷо, panic хато меорад, defer бо recover онро дарбар мегирад ва барнома бе катифак идома медиҳад.