Junior — Middle
თუ გორუტინაში პანიკა მოხდება, რა შედეგები უნდა ველოდოთ?
sobes.tech AI
პასუხი AI-სგან
თუ goroutine-ში პანიკა (panic) მოხდება, ამ goroutine-ის შესრულება შეწყდება და დაიწყება stack unwinding პროცესი, რომლის დროსაც გამოიძახებიან defer-ით მითითებული ფუნქციები.
თუ პანიკა არ იქნება მართული (მაგალითად, recover-ის გამოყენებით defer-ში), ეს გამოიწვევს მთლიანი პროგრამის დასრულებას.
მნიშვნელოვანია להבין, რომ ერთი goroutine-ის პანიკა პირდაპირ არ ზემოქმედებს სხვა goroutine-ებზე — ისინი აგრძელებენ მუშაობას, თუ პანიკა მთლიანი პროგრამის გაჩერებას არ გამოიწვევს.
პანიკის მართვის მაგალითი:
func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("პანიკა იჭერა და დამუშავდა:", r)
}
}()
panic("რაღაცა მოხდა")
}()