Junior — Middle
Goда defer ичинде recover функциясын колдонуу эмне үчүн зарыл?
sobes.tech AI
AIден жооп
Go тилинде, recover функциясы panic учурларын кармоо жана программаны күтүүсүздөн токтотууну алдын алуу үчүн колдонулат. Бирок, recover гана defer ичинде чакырылса иштейт.
recover-дин defer ичинде колдонулушу төмөнкүлөргө мүмкүндүк берет:
- Аман-эсен паникти иштетүү, мисалы, катаны каттоо же ресурстарды тазалоо.
- Мүмкүн болсо, паниктен кийин программаны иштетүүнү улантуу.
Мисал:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Паниктен кутулуу:", r)
}
}()
// Паник түзө турган код
panic("эч нерсе туура эмес болду")
}
recover-ду defer тышкары чакырса, ал паникти кармабайт жана программа күтүүсүздөн аяктайт. Ошондуктан, recover ар дайым defer ичинде жайгаштырылышы керек, туура иштеши үчүн.