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 pozivarecover(), on hvatapanici 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.