Junior — Middle
Vysvetlite mechanizmus vzájomného pôsobenia funkcií panic, defer a recover v jazyku Go.
sobes.tech AI
Odpoveď od AI
V jazyku Go sú funkcie panic, defer a recover spojené s spracovaním chýb a výnimočných situácií.
panic— spôsobí náhly ukončenie aktuálnej funkcie a spustí proces "paniky", ktorý sa šíri po zásobníku volaní a volá odložené funkciedefer.defer— odkladá vykonanie funkcie do doby opustenia aktuálnej funkcie, čo umožňuje vykonanie upratovania alebo spracovania popanic.recover— umožňuje "chytiť" panic vo vnútri odloženej funkcie a zabrániť ukončeniu programu.
Príklad:
func priklad() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Obnovené z panic:", r)
}
}()
fmt.Println("Pred panic")
panic("niečo sa pokazilo")
fmt.Println("Toto sa nespustí")
}
Tu panic spôsobí chybu, defer s recover ju zachytí a program pokračuje bez pádu.