Middle — Middle+
Vysvětlete mechanismus obnovení systému po selhání v kontextu použití Recover.
sobes.tech AI
Odpověď od AI
V jazyce Go se mechanismus recover používá k zachycení panic a obnovení normálního běhu programu. To umožňuje systému po selhání nezastavit se náhle, ale zpracovat chybu a pokračovat v práci.
Hlavní myšlenka:
- Při vzniku paniky je vykonávání funkcí přerušeno a začíná "rozbalování" zásobníku.
- Pokud v jedné z volaných funkcí je odložené volání (
defer), které volárecover(), zachytí paniku a vrátí hodnotu chyby. - Poté může program chybu zpracovat a pokračovat v provádění.
Příklad:
func safeDivide(a, b int) int {
defer func() {
if r := recover(); r != nil {
fmt.Println("Obnova po panice:", r)
}
}()
return a / b // pokud b == 0, dojde k panic
}
func main() {
fmt.Println(safeDivide(10, 2)) // 5
fmt.Println(safeDivide(10, 0)) // Obnova po panice: runtime error: integer divide by zero
}
Tímto způsobem recover pomáhá udělat systém odolnější vůči neočekávaným chybám a zabránit náhlému ukončení.