Sobes.tech
Junior — Middle

É possível recuperar a execução do programa em qualquer situação após uma pânico usando a função Recover?

sobes.tech IA

Resposta da IA

Não, a função recover em Go não pode ser usada para recuperar a execução do programa em qualquer situação após uma pânico.

recover só funciona se for chamada diretamente dentro de uma função diferida (defer). Se ocorrer uma pânico e houver uma função diferida na pilha de chamadas que chama recover, ela pode capturar a pânico e evitar que o programa termine.

No entanto, se recover não for chamado dentro de uma função diferida, ou se a pânico ocorrer em outra goroutine, o programa terminará com um erro.

Exemplo de uso:

func safeCall() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Pânico capturado:", r)
        }
    }()
    panic("algo deu errado")
}

Assim, recover é um mecanismo para capturar pânicos localmente, mas não um meio universal de recuperação em qualquer situação.