Junior — Middle
113
Go бағдарламалау тілінде panic, defer және recover функцияларының өзара әрекеттесу механизмін түсіндіріңіз.
AI-дан жауап
sobes.tech AI
В Go функции panic, defer и recover связаны с обработкой ошибок и исключительных ситуаций.
panic— вызывает аварийное завершение текущей функции и начинает процесс "паники", который поднимается по стеку вызовов, вызывая отложенные функцииdefer.defer— откладывает выполнение функции до выхода из текущей функции, что позволяет выполнять очистку или обработку послеpanic.recover— позволяет "поймать" панику внутри отложенной функции и предотвратить завершение программы.
Пример:
func example() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
fmt.Println("Before panic")
panic("something went wrong")
fmt.Println("This will not run")
}
Здесь panic вызывает ошибку, defer с recover ловит её и программа продолжает работу без краха.