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