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.