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 invocarecover(), 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.