Maison > développement back-end > Golang > le corps du texte

Gestion des erreurs et mécanisme d'exception dans le langage Go

王林
Libérer: 2023-05-31 22:21:04
original
2314 Les gens l'ont consulté

Le langage

Go est un langage de programmation concis et facile à apprendre qui se concentre sur la robustesse du code et la gestion des erreurs. Dans le langage Go, la gestion des erreurs et les mécanismes d’exception sont des éléments très importants. Cet article approfondira la gestion des erreurs et le mécanisme d'exception dans le langage Go, y compris la base de la gestion des erreurs, les types d'erreurs, les méthodes de gestion des erreurs, ainsi que le mécanisme d'exception du langage Go et comment gérer les exceptions.

1. La base de la gestion des erreurs

Dans le langage Go, les erreurs sont généralement représentées par le type d'erreur. Le type d'erreur est un type d'interface prédéfini. Il possède une méthode Error qui renvoie une chaîne décrivant le message d'erreur.

Dans le langage Go, lorsqu'une fonction doit renvoyer une erreur, elle renvoie généralement une valeur de type error. S'il n'y a pas d'erreur, elle renvoie nil. Par exemple :

func f() error {
   // some code
   if errorOccurred {
      return errors.New("some error occurred")
   }
   // continue
   return nil
}
Copier après la connexion

Dans l'exemple ci-dessus, si une erreur se produit dans la fonction f, une valeur de type error contenant des informations sur l'erreur sera renvoyée, sinon nil sera renvoyé.

2. Type d'erreur

Le type d'erreur dans le langage Go peut être n'importe quel type, mais le type de chaîne est généralement utilisé pour représenter les informations d'erreur. Afin de faciliter la gestion des erreurs, la bibliothèque du langage Go fournit un package d'erreurs pour créer et traiter les messages d'erreur. Créez une instance d'erreur contenant des informations d'erreur via la méthode erreurs.Nouvelle, par exemple :

func div(a, b int) (int, error) {
   if b == 0 {
      return 0, errors.New("division by zero")
   }
   return a / b, nil
}
Copier après la connexion

Dans le code ci-dessus, la fonction div est utilisée pour effectuer une division entière. Si le diviseur est 0, une instance d'erreur. contenant des informations d’erreur est renvoyée. Une valeur de type error.

3. Méthodes de gestion des erreurs

Il existe trois méthodes principales de gestion des erreurs dans le langage Go :

  1. Valeur de retour pour capturer les erreurs # 🎜🎜#
Les fonctions et méthodes du langage Go renvoient généralement une valeur de type error pour indiquer si la fonction ou la méthode a été exécutée avec succès. Les appelants peuvent gérer les erreurs d’exécution d’une fonction ou d’une méthode via des retours d’erreur. Par exemple :

result, err := someFunction()
if err != nil {
   // handle error
}
Copier après la connexion

    Panic and Recover
La fonction de panique du langage Go est utilisée pour lancer une exception d'exécution. En cas de panique, le programme arrêtera immédiatement l'exécution, le cadre de pile de la fonction actuelle sera sauté et la fonction parent qui continue de s'exécuter continuera à s'exécuter.

La fonction de récupération est utilisée pour capturer les exceptions d'exécution causées par la panique et permettre au programme de poursuivre son exécution une fois l'exception traitée. Si vous appelez recovery dans la fonction defer, vous pouvez restaurer la scène et la gérer lorsqu'une exception se produit dans le programme. Par exemple :

func main() {
   defer func() {
      if r := recover(); r != nil {
         fmt.Println("Recovered from panic:", r)
      }
   }()
   panic("Panic occurred")
}
Copier après la connexion

Dans le code ci-dessus, lorsque le programme exécute la fonction de panique, une exception d'exécution sera levée, provoquant l'arrêt de l'exécution du programme et l'émission d'un message d'erreur. Mais en appelant la fonction recovery dans la fonction main, nous pouvons restaurer la scène et la gérer lorsque le programme lève une exception.

    Erreurs d'enregistrement du journal
Le package de journaux en langage Go fournit un ensemble de fonctions pour enregistrer des informations et des erreurs, qui peuvent enregistrer des erreurs dans le fichier ou console spécifié. Par exemple :

logger := log.New(os.Stderr, "LOG: ", log.Lshortfile)
logger.Println("Error message")
Copier après la connexion

Dans le code ci-dessus, nous créons un nouvel enregistreur et utilisons la fonction Println pour enregistrer les informations d'erreur. Le package de journaux fournit de nombreuses méthodes différentes pour enregistrer les informations et les erreurs. L'utilisation du package de journalisation pour enregistrer les messages d'erreur est généralement plus simple, mais pas aussi flexible que le renvoi des valeurs d'erreur et l'utilisation de la fonction de récupération.

4. Mécanisme d'exception et gestion du langage Go

Dans le langage Go, les exceptions sont différentes du mécanisme d'exception des langages de programmation traditionnels et ne fournissent pas de syntaxe similaire à throw et attraper. . Cependant, en utilisant des mécanismes d'instructions tels que le report et la récupération, une capture et un traitement des exceptions similaires à la structure try-catch peuvent être obtenus.

L'instruction defer est utilisée pour spécifier les opérations qui doivent être effectuées à la sortie de la fonction. L'appel de la fonction defer dans une fonction permet au programme de différer l'exécution de certaines instructions jusqu'à la fin de la fonction, ce qui facilite la mise en œuvre d'opérations telles que la libération de ressources, la vérification des exceptions et le calcul de la valeur de retour.

La fonction de récupération est utilisée pour capturer les exceptions d'exécution causées par la panique et renvoyer l'exception qui arrête le programme. Avant d'appeler recovery, vous devez utiliser la fonction defer pour différer l'appel de fonction jusqu'à l'exécution du programme. Par exemple :

func panicAndRecover() {
   defer func() {
      if r := recover(); r != nil {
         fmt.Println("Recovered from panic:", r)
      }
   }()
   panic("Panic occurred")
}
Copier après la connexion
Dans le code ci-dessus, nous appelons la fonction panic pour déclencher une exception d'exécution et utilisons la fonction recovery en dehors d'elle pour capturer les informations sur l'exception. L'instruction defer est utilisée pour spécifier l'opération qui doit être effectuée à la fin de la fonction, c'est-à-dire pour gérer l'exception Panic. Si recovery est appelé à tout moment avant Panic et qu'il renvoie une valeur non nulle, l'exécution continuera, sinon le programme s'arrêtera. S'il n'y a aucune fonction de récupération en dehors du code qui puisse intercepter l'exception, le programme se terminera.

5. Résumé

Cet article prend le langage Go comme exemple pour présenter les méthodes d'implémentation et de traitement des mécanismes de gestion des erreurs et d'exceptions. Dans le langage Go, la gestion des erreurs est très importante et très pratique à implémenter et à gérer. Elle implique généralement la création d'informations sur les erreurs, la définition du type d'erreur, le traitement des valeurs de retour de la fonction, ainsi que la capture et la gestion des exceptions. En plus des méthodes de traitement mentionnées ci-dessus, le langage Go dispose également d'autres méthodes de gestion des erreurs, telles que l'utilisation de coroutines et de pipelines du langage Go pour gérer les messages d'erreur. Dans le processus de développement actuel, il est nécessaire de choisir une méthode de gestion des erreurs appropriée en fonction des besoins réels et des scénarios commerciaux.

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!

Étiquettes associées:
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