Middle
Goroutine-i işə salıb içində panic çağırsaq nə baş verər? Goroutine dayanacaq yoxsa bütün tətbiq dayanacaq?
sobes.tech Süni İntellekt
AI-dan cavab
Bir goroutine içində panic baş verərsə, bu konkret goroutine dayanacaq, amma bütün tətbiq avtomatik olaraq bağlanmayacaq. Bir goroutine-dəki panika bütün goroutine-lərin və ya proqramın dayanmasına səbəb olmur, əgər o kök səviyyəyə çatmaz və işlənməzsə.
Tətbiqin qəfil bağlanmasının qarşısını almaq üçün, recover-dən həm eyni goroutine daxilində, həm də çağıran funksiyada istifadə etmək olar, beləliklə panika tutulur və idarə olunur.
Nümunə:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Goroutine-də tutulan panika:", r)
}
}()
panic("nəsə səhv getdi")
}()
Bu nümunədə, panika bütün tətbiqin dayanmasına səbəb olmayacaq, əksinə goroutine daxilində idarə olunacaq.