Junior — Middle
Har qanday vaziyatda Panicdan so'ng dastur bajarilishini Recover funktsiyasi yordamida tiklash mumkinmi?
sobes.tech AI
AIdan javob
Yo'q, Go tilida recover funksiyasi panikadan keyin dastur ishini har qanday holatda tiklash uchun ishlatilmaydi.
recover faqat to'g'ridan-to'g'ri defer ichida chaqirilganda ishlaydi. Agar panika yuz bersa va chaqirish stekida recover chaqiruviga ega kechiktirilgan funktsiya bo'lsa, u panikani ushlashi va dastur tugashining oldini olishi mumkin.
Ammo, agar recover kechiktirilgan funktsiyada chaqirilmasa yoki panika boshqa goroutine'da yuz bersa, dastur xato bilan yakunlanadi.
Foydalanish misoli:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panika ushlandi:", r)
}
}()
panic("narsa noto'g'ri ketdi")
}
Shunday qilib, recover mahalliy panikalarni ushlash mexanizmi, lekin har qanday holatda tiklash uchun universal vosita emas.