Назад к вопросам
Junior — Middle
78
Объясните механизм взаимодействия функций panic, defer и recover в языке программирования Go.
Ответ от нейросети
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 ловит её и программа продолжает работу без краха.