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

Tutoriel de base Golang

Instructions de contrôle Golang

Fonctions & Méthodes Golang

Structures Golang

Coupes & Tableaux Golang

Chains Golang (String)

Pointeurs Golang

Interfaces Golang

Concurrence Golang

Erreurs Golang

Autres articles Golang

Gestion des erreurs (Error) du langage Go

Go n'a pas de / catch telles exceptions mécanismes, nous ne pouvons pas lever des exceptions en Go.

Go utilise un autre mécanisme, appeléMécanisme de panique différé et de récupération.

Go traite les erreurs simples des fonctions et des méthodes en retournant un objet d'erreur. L'objet d'erreur peut être le seul ou le dernier retour, et est nil si il n'y a pas d'erreur dans la fonction.

Que ce soit avec ou sans erreur, nous devons toujours vérifier l'erreur dans l'appel de la fonction.

Nous ne devons jamais ignorer les erreurs, car elles peuvent entraîner un plantage du programme.

La méthode que Go utilise pour détecter et signaler les erreurs est

  • Les fonctions qui peuvent entraîner des erreurs retourneront deux variables : une valeur et un code d'erreur, nil si succès ; si une condition d'erreur, alors != nil.

  • Vérifiez l'erreur après l'appel de la fonction. Si une erreur se produit (if error != nil), arrêtez l'exécution de la fonction réelle (ou de tout le programme si nécessaire).

Go a un type d'interface d'erreur prédéfini

type error interface {
    Error() string
}	

Nous pouvons utiliser la fonction error.New du paquet d'erreur pour définir le type d'erreur et fournir un message d'erreur approprié, par exemple :

err := errors.New("math - 负数的平方根")

Exemple d'erreur

package main
import "errors"
import "fmt"
import "math"
func Sqrt(value float64) (float64, error) {
   if (value < 0) {
      return 0, errors.New("Math: 负数的平方根")
   }
   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)
   }
}

Sortie :

Math: racine carrée d'un nombre négatif
8