Sobes.tech
Middle — Middle+

Leg uit hoe het herstelmechanisme van het systeem werkt na een storing in de context van het gebruik van Recover.

sobes.tech AI

Antwoord van AI

In Go wordt het mechanisme recover gebruikt om paniek (panic) op te vangen en de normale uitvoering van het programma te herstellen. Dit stelt het systeem in staat, na een fout, niet abrupt te eindigen, maar de fout af te handelen en door te gaan.

Belangrijkste idee:

  • Wanneer er een panic optreedt, wordt de uitvoering van functies onderbroken en begint het "uitrollen" van de stack.
  • Als in een van de aangeroepen functies een defer-oproep is die recover() aanroept, vangt deze de panic op en geeft de foutwaarde terug.
  • Daarna kan het programma de fout afhandelen en doorgaan met uitvoeren.

Voorbeeld:

func safeDivide(a, b int) int {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Herstel na panic:", r)
        }
    }()
    return a / b // als b == 0, zal er een panic optreden
}

func main() {
    fmt.Println(safeDivide(10, 2)) // 5
    fmt.Println(safeDivide(10, 0)) // Herstel na panic: runtime error: integer divide by zero
}

Op deze manier helpt recover om het systeem veerkrachtig te maken tegen onverwachte fouten en een plotselinge beëindiging te voorkomen.