Middle — Middle+
Vysvetlite mechanizmus obnovenia systému po chybe v kontexte použitia Recover.
sobes.tech AI
Odpoveď od AI
V jazyku Go se mechanizmus recover používa na zachytenie panic a obnovenie normálneho behu programu. To umožňuje systému, po chybe, nezastaviť sa náhle, ale spracovať chybu a pokračovať v práci.
Hlavná myšlienka:
- Keď dôjde k
panic, vykonávanie funkcií sa preruší a začne sa "rozbalovanie" zásobníka. - Ak v jednej z volaných funkcií je odložené (
defer) volanie, ktoré volárecover(), zachytí panic a vráti hodnotu chyby. - Následne môže program chybu spracovať a pokračovať v vykonávaní.
Príklad:
func safeDivide(a, b int) int {
defer func() {
if r := recover(); r != nil {
fmt.Println("Obnova po panike:", r)
}
}()
return a / b // ak b == 0, dôjde k panic
}
func main() {
fmt.Println(safeDivide(10, 2)) // 5
fmt.Println(safeDivide(10, 0)) // Obnova po panike: runtime error: integer divide by zero
}
Týmto spôsobom recover pomáha urobiť systém odolnejším voči neočakávaným chybám a zabrániť náhlemu ukončeniu.