Junior — Middle
Prečo je potrebné použiť funkciu recover vnútri defer v Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa funkcia recover používa na zachytenie panic a zabránenie náhlemu ukončeniu programu. Avšak, recover funguje iba v prípade, že je volaná vnútri odložené funkcie (defer).
Použitie recover v defer umožňuje:
- Bezpečne spracovať
panic, napríklad zaznamenaním chyby alebo vyčistením zdrojov. - Pokračovať v behu programu po
panic, ak je to možné.
Príklad:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Obnova z panic:", r)
}
}()
// Kód, ktorý môže spôsobiť panic
panic("niečo sa pokazilo")
}
Ak sa recover zavolá mimo defer, nezachytí panic a program sa ukončí neočakávane. Preto je recover vždy umiestnené vo vnútri defer pre správne ošetrenie výnimočných situácií.