Sobes.tech
Назад к вопросам
Senior
7

Что такое panic, как обрабатывать, можно ли поймать?

Компании, где спрашивали
Финтехробот

Ответ от нейросети

sobes.tech AI

В Go panic — это механизм, который вызывается при возникновении критической ошибки, после чего выполнение программы прерывается и начинается процесс отматывания стека вызовов (stack unwinding).

Обрабатывать panic можно с помощью функции recover(), которая позволяет «поймать» панику внутри отложенной функции (defer). Это полезно для предотвращения аварийного завершения программы и для логирования ошибок.

Пример:

func safeCall() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()
    panic("something went wrong")
}

Таким образом, panic можно поймать, но рекомендуется использовать его только для действительно исключительных ситуаций, а не для обычной обработки ошибок.