Можешь в одном из defer-ов обработать панику?

В Go для обработки аварийного завершения программы, вызванного паникой, часто используют конструкцию defer вместе с функцией recover().

Короткий ответ

Что ответить на собеседовании

В Go для обработки аварийного завершения программы, вызванного паникой, часто используют конструкцию defer вместе с функцией recover(). В отложенной функции (defer) можно вызвать recover(), которая перехватывает панику и позволяет программе продолжить выполнение или корректно завершиться.

Подробный разбор

Ответ с пояснениями

В Go для обработки аварийного завершения программы, вызванного паникой, часто используют конструкцию defer вместе с функцией recover(). В отложенной функции (defer) можно вызвать recover(), которая перехватывает панику и позволяет программе продолжить выполнение или корректно завершиться.

Пример:

func safeFunction() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Поймана паника:", r)
            // Здесь можно выполнить очистку или логирование
        }
    }()

    // Код, который может вызвать панику
    panic("что-то пошло не так")
}

Таким образом, defer гарантирует выполнение функции, а recover() позволяет обработать панику, не приводя к аварийному завершению программы.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку