Maison > développement back-end > Golang > Comment gérer les erreurs dans Golang

Comment gérer les erreurs dans Golang

PHPz
Libérer: 2023-04-10 09:10:23
original
946 Les gens l'ont consulté

Golang est un langage de développement orienté objet fortement typé, très respecté pour son efficacité et sa concurrence. Dans le processus de développement avec Golang, nous rencontrons souvent des erreurs renvoyées, nous devons donc apprendre à gérer les erreurs Golang.

  1. Types d'erreur dans Golang

Dans Golang, le type d'erreur est l'un des types intégrés, et vous pouvez personnaliser le type d'erreur en implémentant la méthode Error. Les fonctions et méthodes internes de Golang renvoient souvent des variables de type erreur avec des informations d'erreur. Nous pouvons déterminer si la fonction ou la méthode est exécutée avec succès en jugeant si la variable est nulle.

Par exemple :

func sum(a int, b int) (int, error) {
   if b == 0 {
      return 0, errors.New("除数不能为0")
   }
   return a/b, nil
}
Copier après la connexion

Dans le code ci-dessus, si b est 0, une variable de type erreur non nulle sera renvoyée, et le résultat 0 sera également renvoyé. Si b est différent de 0, la variable de type d'erreur renvoyée est nulle.

  1. Méthode de gestion des erreurs

Dans Golang, les erreurs peuvent être gérées via des instructions if et des instructions switch. Contrairement à d'autres langages de programmation, la gestion des erreurs dans Golang est généralement placée au niveau de l'appelant de la fonction ou de la méthode.

Par exemple :

result, err := sum(10, 0)
if err != nil {
   fmt.Println("计算错误:", err)
} else {
   fmt.Println("计算结果为:", result)
}
Copier après la connexion

Dans le code ci-dessus, si la variable err renvoyée par la fonction somme n'est pas nulle, cela signifie qu'il y a une erreur dans le calcul et doit être traitée. Si la variable err est nulle, le calcul est réussi.

En plus des instructions if, vous pouvez également utiliser des instructions switch pour gérer les erreurs. L'instruction switch peut être plus claire et plus facile à lire lorsqu'il s'agit de plusieurs erreurs possibles.

Exemple :

switch err := doSomething(); {
case err == nil:
   // 处理成功的情况
case strings.Contains(err.Error(), "timeout"):
   // 处理超时的情况
case isNotFound(err):
   // 处理未找到的情况
default:
   // 处理其他情况
}
Copier après la connexion
  1. Meilleures pratiques de gestion des erreurs

Pour la gestion des erreurs dans Golang, il existe certaines bonnes pratiques qui peuvent améliorer la lisibilité et la maintenabilité du code.

(1) Utilisez l'instruction defer pour détecter les erreurs

Dans Golang, vous pouvez utiliser l'instruction defer pour détecter et gérer les erreurs lorsque la fonction revient. Cela peut séparer le fonctionnement normal de la fonction du code de gestion des erreurs et améliorer la lisibilité du code.

Par exemple :

func readFile(fileName string) error {
   f, err := os.Open(fileName)
   if err != nil {
      return err
   }
   defer f.Close()

   // 代码正常执行
}
Copier après la connexion

Dans le code ci-dessus, l'instruction defer est utilisée pour fermer le descripteur de fichier. Qu'une erreur se produise ou non dans la fonction readFile, elle sera exécutée avant le retour de la fonction.

(2) Utilisez des fonctions encapsulées pour gérer les erreurs

Pour certaines opérations courantes, vous pouvez écrire des fonctions encapsulées pour gérer les erreurs. Cela peut éviter une grande quantité de code en double et améliorer la réutilisabilité et la lisibilité du code.

Par exemple :

func readFull(r io.Reader, buf []byte) error {
   _, err := io.ReadFull(r, buf)
   if err != nil {
      return fmt.Errorf("读取错误:%v", err)
   }
   return nil
}
Copier après la connexion

Dans le code ci-dessus, une fonction de lecture est encapsulée et des informations d'erreur personnalisées sont renvoyées à l'aide de la fonction fmt.Errorf.

(3) Utilisez la journalisation pour enregistrer les informations sur les erreurs

Dans Golang, vous pouvez utiliser le package de journaux pour enregistrer les informations sur les erreurs afin de faciliter le débogage et le dépannage. Vous pouvez utiliser log.Printf ou log.Fatalf pour afficher les informations d'erreur sur la console ou dans un fichier.

Par exemple :

if err != nil {
   log.Fatalf("计算错误:%v", err)
}
Copier après la connexion
  1. Résumé

Dans le processus de développement avec Golang, la gestion des erreurs est un élément essentiel. En apprenant les méthodes de gestion des erreurs et les meilleures pratiques dans Golang, vous pouvez considérablement améliorer la lisibilité, la maintenabilité et la robustesse de votre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal