Junior — Middle
100
Go тілінде defer шақыру ішіндегі паниканы ұстау және өңдеу мүмкін бе?
AI-дан жауап
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().