Sobes.tech
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í.