Junior — Middle
Go'da defer chaqiruv ichida paniklarni ushlash va boshqarish mumkinmi?
sobes.tech AI
AIdan javob
Go tilida, defer yordamida paniklarni boshqarish mumkin, ammo defer chaqiruvi o'zi panikni ushlamaydi; panikni recover() yordamida defer bilan kechiktirilgan funktsiya ichida ushlash kerak.
Misol:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panikani ushlash va ishlash:", r)
}
}()
panic("narsa noto'g'ri ketdi")
}
Bu yerda, recover() defer bilan kechiktirilgan funktsiya ichida chaqiriladi va safeCall ichida yuzaga kelgan panikani ushlash imkonini beradi. Shunday qilib, panikani to'g'ridan-to'g'ri defer ichida "ushlab bo'lmaydi", lekin uni recover() yordamida kechiktirilgan funktsiya ichida boshqarish mumkin.