Sobes.tech
Middle — Middle+

Explique o mecanismo de recuperação do sistema após uma falha no contexto do uso do Recover.

sobes.tech IA

Resposta da IA

No Go, o mecanismo recover é utilizado para capturar pânicos (panic) e restaurar a execução normal do programa. Isso permite que o sistema, após uma falha, não termine abruptamente, mas trate o erro e continue a trabalhar.

Ideia principal:

  • Quando ocorre um pânico, a execução das funções é interrompida e começa a "desenrolar" da pilha.
  • Se em uma das funções chamadas houver uma chamada diferida (defer) que invoca recover(), ela captura o pânico e retorna o valor do erro.
  • Após isso, o programa pode tratar o erro e continuar a execução.

Exemplo:

func safeDivide(a, b int) int {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recuperação após pânico:", r)
        }
    }()
    return a / b // se b == 0, ocorrerá pânico
}

func main() {
    fmt.Println(safeDivide(10, 2)) // 5
    fmt.Println(safeDivide(10, 0)) // Recuperação após pânico: runtime error: integer divide by zero
}

Assim, recover ajuda a tornar o sistema resistente a erros inesperados, evitando encerramentos abruptos.