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ésleltetettdeferfü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 apanicután.recover— lehetővé teszi, hogy "elkapja" apanic-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.