Sobes.tech
Назад к вопросам
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 программа не завершается аварийно, а ошибка обрабатывается.