Sobes.tech
Junior — Middle

Magyarázza el a panic, defer és recover funkciók kölcsönhatási mechanizmusát a Go programozási nyelvben.

sobes.tech MI

Válasz az MI-től

Go nyelvben a panic, defer és recover funkciók a hibakezeléssel és kivételes helyzetekkel kapcsolatosak.

  • panic — az aktuális függvény hirtelen befejezését okozza, és elindítja a "pánik" folyamatot, amely a hívási verem mentén felfelé terjed, és meghívja a késleltetett defer függvényeket.
  • defer — késlelteti egy függvény végrehajtását az aktuális függvény kilépéséig, lehetővé téve a tisztítást vagy feldolgozást a panic után.
  • recover — lehetővé teszi, hogy "elkapja" a panic-t egy késleltetett függvényen belül, és megakadályozza a program leállását.

Példa:

func pelda() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Visszanyert panic-ból:", r)
        }
    }()

    fmt.Println("Panic előtt")
    panic("valami rosszul ment")
    fmt.Println("Ez nem fog lefutni")
}

Itt a panic hibát okoz, a defer a recover-rel elkapja, és a program hibamentesen folytatódik.