Sobes.tech
Middle — Middle+

Objasnite mehanizam oporavka sistema nakon kvara u kontekstu korišćenja Recover.

sobes.tech АИ

Одговор од АИ

U jeziku Go, mehanizam recover se koristi za hvatanje panic i obnavljanje normalnog izvršavanja programa. Ovo omogućava sistemu, nakon greške, da se ne zaustavi naglo, već da obradi grešku i nastavi sa radom.

Glavna ideja:

  • Kada dođe do panic, izvršavanje funkcija se prekida i počinje "razvijanje" steka.
  • Ako u jednoj od pozvanih funkcija postoji odloženi poziv (defer) koji poziva recover(), on hvata panic i vraća vrednost greške.
  • Nakon toga, program može da obradi grešku i nastavi sa izvršavanjem.

Primer:

func safeDivide(a, b int) int {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Obnova nakon panike:", r)
        }
    }()
    return a / b // ako je b == 0, biće panic
}

func main() {
    fmt.Println(safeDivide(10, 2)) // 5
    fmt.Println(safeDivide(10, 0)) // Obnova nakon panike: runtime error: integer divide by zero
}

Na ovaj način, recover pomaže da sistem bude otporniji na neočekivane greške, sprečavajući nagli prekid rada.