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