Назад к вопросам
Mail.ru
Junior — Middle
104
Каким образом можно обработать аварийное завершение программы, вызванное паникой, при использовании конструкции defer?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go для обработки аварийного завершения программы, вызванного паникой, часто используют конструкцию defer вместе с функцией recover(). В отложенной функции (defer) можно вызвать recover(), которая перехватывает панику и позволяет программе продолжить выполнение или корректно завершиться.
Пример:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Поймана паника:", r)
// Здесь можно выполнить очистку или логирование
}
}()
// Код, который может вызвать панику
panic("что-то пошло не так")
}
Таким образом, defer гарантирует выполнение функции, а recover() позволяет обработать панику, не приводя к аварийному завершению программы.