Sobes.tech
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.