Middle — Middle+
Explica mecanismul de recuperare a sistemului după o defecțiune în contextul utilizării Recover.
sobes.tech AI
Răspuns de la AI
În Go, mecanismul recover este utilizat pentru a captura panicile (panic) și pentru a restabili execuția normală a programului. Acest lucru permite sistemului, după o eroare, să nu se încheie brusc, ci să gestioneze eroarea și să continue funcționarea.
Ideea principală:
- Când apare o panică, execuția funcțiilor este întreruptă și începe "derularea" stivei.
- Dacă în una dintre funcțiile apelate există un apel întârziat (
defer) care invocărecover(), acesta capturează panică și returnează valoarea erorii. - După aceea, programul poate gestiona eroarea și poate continua execuția.
Exemplu:
func safeDivide(a, b int) int {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recuperare după panică:", r)
}
}()
return a / b // dacă b == 0, va apărea panic
}
func main() {
fmt.Println(safeDivide(10, 2)) // 5
fmt.Println(safeDivide(10, 0)) // Recuperare după panic: runtime error: integer divide by zero
}
Astfel, recover ajută la crearea unui sistem rezistent la erori neașteptate, prevenind închiderea bruscă a programului.