Como é que a sua aplicação gere exceções e erros?
sobes.tech IA
Resposta da IA
No Go, a gestão de erros difere de muitas outras linguagens, pois aqui não há exceções no sentido habitual. Em vez disso, as funções normalmente retornam um valor de erro (error) como segundo resultado.
Abordagens principais:
-
Verificação de erro após chamar uma função:
result, err := someFunction() if err != nil { // tratamento de erro log.Println("Erro:", err) return err } // continuar com o resultado -
Criação de tipos de erro próprios usando
errors.Newoufmt.Errorfpara mensagens mais informativas. -
Pânicos (
panic) e recuperação (recover) são usados raramente, principalmente para erros críticos que não devem ocorrer no fluxo normal. -
Registro de erros e devolvê-los para cima na pilha para um tratamento centralizado.
Exemplo de tratamento de erro:
package main
import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("divisão por zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Erro:", err)
return
}
fmt.Println("Resultado:", result)
}
Dessa forma, em Go, os erros são tratados explicitamente, o que aumenta a legibilidade e a confiabilidade do código.