Назад к вопросам
Junior — Middle
76
Можно ли ловить и обрабатывать паники внутри вызова defer в Go?
Ответ от нейросети
sobes.tech AI
В Go можно использовать defer для обработки паник, но сам вызов defer не ловит панику — ловить панику нужно внутри функции, отложенной через defer, с помощью recover().
Пример:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Паника поймана и обработана:", r)
}
}()
panic("что-то пошло не так")
}
Здесь recover() вызывается внутри функции, отложенной через defer, и позволяет поймать панику, возникшую в safeCall. Таким образом, паники нельзя "ловить" непосредственно в defer, но можно обработать их внутри отложенной функции с recover().