Junior — Middle
Կարո՞ղ եք բռնել և կառավարել панիկաները defer-ի ներսում Go-ում:
sobes.tech AI
Պատասխան AI-ից
Go լեզվում կարող եք օգտագործել defer՝ panic-ների կառավարելու համար, բայց defer-ի կանչը ինքնին չի բռնում panic-ը; այն պետք է բռնվի recover()-ի միջոցով defer-ով հետաձգված ֆունկցիայի ներսում:
Օրինակ՝
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panika բռնվեց և մշակվեց:", r)
}
}()
panic("ինչ-որ բան սխալ է գնացել")
}
Այստեղ recover()-ը կանչվում է defer-ով հետաձգված ֆունկցիայի ներսում և թույլ է տալիս բռնել safeCall-ում առաջացած panic-ը: Այսպիսով, panic-ները հնարավոր չէ ուղղակիորեն բռնել defer-ում, բայց կարելի է մշակել դրանց recover()-ի միջոցով։