English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico do Golang

Controle de Fluxo do Golang

Função & Método do Golang

Estrutura do Golang

Fatia & Array do Golang

String do Golang (String)

Ponteiro do Golang

Interface do Golang

Concorrência do Golang

Exceções do Golang (Error)

Outros itens do Golang

Error (Tratamento de Erro) do Linguagem Go

O Go não tem como o Java o try / catch那样的异常机制,我们不能在Go中抛出异常。

O Go usa outro mecanismo, chamadoMecanismo de pânico adiado e recuperação.

O Go lida com erros simples em funções e métodos retornando um objeto de erro. O objeto de erro pode ser o único ou o último valor de retorno. Se não houver erro na função, o objeto de erro é nil.

Seja qual for o resultado, sempre verifique o erro na chamada.

Nunca ignoremos os erros, pois eles podem causar falhas no programa.

O método que o Go usa para detectar e relatar situações de erro é

  • Funções que podem gerar erros retornarão dois valores: um valor e um código de erro, se bem-sucedido, nil; se houver uma condição de erro, então == nil.

  • Verifique o erro após a chamada de função. Se ocorrer um erro (if error != nil), pare a execução da função real (ou todo o programa, se necessário).

O Go possui um tipo de interface de erro pré-definido

type error interface {
    Error() string
}	

Podemos usar a função error.New do pacote de erros para definir tipos de erros e fornecer mensagens de erro apropriadas, por exemplo:

err := errors.New("math - raiz quadrada de número negativo")

Exemplo de erro

package main
import "errors"
import "fmt"
import "math"
func Sqrt(value float64) (float64, error) {
   if (value < 0) {
      return 0, errors.New("Math: raiz quadrada de número negativo")
   }
   return math.Sqrt(value), nil
}
func main() {
   result, err := Sqrt(-64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
   result, err = Sqrt(64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
}

Saída:

Math: raiz quadrada de número negativo
8