Sobes.tech
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.