Назад к вопросам
Junior — Middle
83
Объясните концепцию механизма эвакуации в языке Go и его назначение
Компании, где спрашивали
Digital Spirit
Ответ от нейросети
sobes.tech AI
В языке Go механизм эвакуации (panic и recover) используется для обработки неожиданных ошибок и исключительных ситуаций во время выполнения программы.
panic— это вызов, который прерывает нормальное выполнение программы, вызывая цепочку отложенных функций (defer) и в конечном итоге завершает программу, еслиpanicне будет обработан.recover— функция, которая может быть вызвана внутри отложенной функции (defer) для перехвата паники и предотвращения завершения программы.
Назначение механизма:
- Позволяет обрабатывать критические ошибки, которые невозможно или неудобно обрабатывать обычными способами.
- Обеспечивает возможность восстановиться после ошибки и продолжить выполнение программы.
Пример:
func safeDivide(a, b int) int {
defer func() {
if r := recover(); r != nil {
fmt.Println("Восстановление после паники:", r)
}
}()
if b == 0 {
panic("деление на ноль")
}
return a / b
}
Здесь при попытке деления на ноль вызывается panic, но благодаря recover программа не завершается аварийно, а ошибка обрабатывается.