Junior — Middle
Goда defer чакыруунун ичинде паникаларды кармап жана иштетүү мүмкүнбү?
sobes.tech AI
AIден жооп
Go тилинде, defer колдонуп паникаларды башкарса болот, бирок defer чакырыгы өзү паникага туш келбейт; паника recover() аркылуу defer менен кечиктирилген функциянын ичинде кармалышы керек.
Мисал:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Паника кармалды жана иштетилди:", r)
}
}()
panic("эч нерсе туура эмес болду")
}
Бул жерде, recover() defer менен кечиктирилген функциянын ичинде чакырылат жана safeCall ичинде пайда болгон паниканы кармап алууга мүмкүндүк берет. Ошондуктан, паника defer түздөн-түз кармалбайт, бирок аны recover() аркылуу иштетүүгө болот.