Sobes.tech
Back to questions
Senior
10

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

Companies where asked
Финтехробот

Answer from AI

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 можно поймать, но рекомендуется использовать его только для действительно исключительных ситуаций, а не для обычной обработки ошибок.