Sobes.tech
Junior — Middle

Објасните механизам интеракције функција panic, defer и recover у језику програмирања Go.

sobes.tech АИ

Одговор од АИ

U Go jeziku, funkcije panic, defer i recover povezane su sa obradom grešaka i izuzetnih situacija.

  • panic — izaziva nagli završetak trenutne funkcije i pokreće proces "panike", koji se širi kroz stek poziva i poziva odložene defer funkcije.
  • defer — odlaže izvršenje funkcije do izlaska iz trenutne funkcije, omogućavajući čišćenje ili obradu nakon panic.
  • recover — omogućava "hvatanje" panike unutar odložene funkcije i sprečava kraj programa.

Primer:

func primer() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Vraćeno iz panic:", r)
        }
    }()

    fmt.Println("Pre panic")
    panic("nešto je pošlo po zlu")
    fmt.Println("Ovo se neće izvršiti")
}

Ovde, panic izaziva grešku, defer sa recover je hvata, i program nastavlja sa radom bez pada.