Junior — Middle
Explique o mecanismo de interação entre as funções panic, defer e recover na linguagem de programação Go.
sobes.tech IA
Resposta da IA
Em Go, as funções panic, defer e recover estão relacionadas com o tratamento de erros e situações excecionais.
panic— provoca a terminação abrupta da função atual e inicia o processo de "pânico", que se propaga pela pilha de chamadas, chamando funçõesdeferadiadas.defer— adia a execução de uma função até à saída da função atual, permitindo realizar limpeza ou processamento após umpanic.recover— permite "capturar" um pânico dentro de uma função adiada e evitar que o programa termine.
Exemplo:
func exemplo() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recuperado do pânico:", r)
}
}()
fmt.Println("Antes do pânico")
panic("algo correu mal")
fmt.Println("Isto não será executado")
}
Aqui, panic provoca um erro, defer com recover captura-o e o programa continua a funcionar sem falhas.