Паника в Go — это встроенная функция, которая сразу же прерывает выполнение программы при возникновении неустранимой ошибки. Когда её вызвать, она останавливает нормальный ход выполнения и начинает разворачивать стек вызовов.
Когда вызывается panic(), происходит следующее:
Панику стоит использовать только в действительно исключительных ситуациях:
recover()Go предоставляет функцию recover() для корректной обработки паники:
defer func() {
if r := recover(); r != nil {
// Обработать панику
}
}()
Функция recover() работает только внутри отложенных функций и возвращает значение, переданное в panic(). Вне отложенного контекста recover() возвращает nil.
recover() только когда ты можешь осмысленно обработать паникуВ отличие от исключений в других языках, механизм паники в Go не предназначен для обычной обработки ошибок. Go делает акцент на явном возврате ошибок как идиоматичном подходе к управлению ошибками.
Когда вызывается panic(), отложенные функции выполняются в порядке LIFO перед завершением программы.
Новый — ещё не проверен сообществом
Вы