Junior — Middle
Vysvětlete mechanismus vzájemného působení funkcí panic, defer a recover v jazyce Go.
sobes.tech AI
Odpověď od AI
V jazyce Go jsou funkce panic, defer a recover spojeny s ošetřením chyb a výjimečných situací.
panic— způsobí náhlé ukončení aktuální funkce a spustí proces "paniky", který se šíří po zásobníku volání a volá odložené funkcedefer.defer— odkládá vykonání funkce do doby opuštění aktuální funkce, což umožňuje provádět úklid nebo zpracování popanic.recover— umožňuje "chytit" paniku uvnitř odložené funkce a zabránit ukončení programu.
Příklad:
func priklad() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Obnovení z panic:", r)
}
}()
fmt.Println("Před panic")
panic("něco se pokazilo")
fmt.Println("Toto se nespustí")
}
Zde panic vyvolá chybu, defer s recover ji zachytí a program pokračuje bez pádu.