Sobes.tech
Middle

Goroutine ni boshlanib, ichida panic chaqirilsa nima bo'ladi? Goroutine to'xtaydi yoki butun ilova to'xtaydi?

sobes.tech AI

AIdan javob

Agar goroutine ichida panic yuzaga kelsa, bu muayyan goroutine to‘xtaydi, ammo butun ilova avtomatik ravishda yopilmaydi. Goroutine ichidagi panika barcha goroutine yoki dastur to‘xtashiga olib kelmaydi, agar u ildiz darajasiga yetmasa va ishlov berilmasa.

Ilovaning kutilmagan yopilishining oldini olish uchun, recover ni aynan shu goroutine ichida yoki chaqiruvchi funksiyada ishlatish mumkin, shunda panika ushlanadi va boshqariladi.

Misol:

func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Goroutine ichida panika ushlandi:", r)
        }
    }()
    panic("narsa noto‘g‘ri ketdi")
}()

Bu misolda, panika butun ilovaning to‘xtashiga olib kelmaydi, balki goroutine ichida boshqariladi.