Junior — Middle
Qual é a necessidade de usar a função recover dentro de defer em Go?
sobes.tech IA
Resposta da IA
Em Go, a função recover é usada para capturar pânicos (panic) e evitar que o programa termine abruptamente. No entanto, recover só funciona se for chamada dentro de uma função diferida (defer).
O uso de recover dentro de defer permite:
- Tratar de forma segura um pânico, por exemplo, registrando o erro ou limpando recursos.
- Continuar a execução do programa após um pânico, se possível.
Exemplo:
func safeFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recuperado de pânico:", r)
}
}()
// Código que pode causar panic
panic("algo deu errado")
}
Se recover for chamado fora de defer, ela não capturará o pânico, e o programa terminará de forma abrupta. Portanto, recover deve sempre ser colocada dentro de defer para o tratamento adequado de situações excepcionais.