Um erro se refere a uma situação anormal no programa, que faz com que o programa falhe ao executar normalmente.
Visão geral do tratamento de erros
- Não há como tentar ... pegar em Go
- A linguagem Go fornece um mecanismo de tratamento de erros muito simples por meio de tipos de erros integrados;
- O valor do erro pode ser armazenado em uma variável e retornado por uma função;
- Se uma função ou método retornar um erro, por convenção, ele deve ser o último valor retornado pela função;
- A maneira idiomática de lidar com erros é comparar o erro retornado com nulo;
- Um valor nulo significa que não ocorreu nenhum erro e um valor não nulo significa que ocorreu um erro;
- Se não for nulo, imprima o erro.
A natureza do erro
- O erro é essencialmente um tipo de interface, que contém um método Error ().
digite a interface de erro { string de erro () } - Qualquer tipo que implemente essa interface pode ser usado como erro. Este método fornece uma descrição do erro de tratamento de erros Go.
Como criar um objeto de erro
1. A função New () no pacote de erros retorna um objeto de erro
- Crie um novo erro por meio de errors.New ().
package errors
// New returns an error that formats as the given text.
func New(text string) error {
return &errorString{text}
}
// errorString is a trivial implementation of error.
type errorString struct {
s string
}
func (e *errorString) Error() string {
return e.s
}
2. A função Errorf () no pacote fmt retorna um objeto de erro
- A função Errorf () no pacote fmt essencialmente chama erros.New ()
// Errorf formats according to a format specifier and returns the string
// as a value that satisfies error.
func Errorf(format string, a ...interface{}) error {
return errors.New(Sprintf(format, a...))
}
3. Crie um erro personalizado
As etapas de implementação são as seguintes:
- 1. Definir uma estrutura para indicar o tipo de erro autodefinido;
- 2. O método para fazer com que o tipo de erro personalizado realize a interface de erro: string Error ()
- 3. Defina uma função que retorne erro. Depende da função real do programa.
O caso é o seguinte:
//myError.go
O efeito é o seguinte: