Maison >développement back-end >Golang >utilisation de Golang Panic

utilisation de Golang Panic

WBOY
WBOYoriginal
2023-05-22 19:26:061182parcourir

Golang est un langage de programmation efficace, sûr et évolutif, populaire pour sa puissante gestion de la mémoire, ses fonctionnalités de concurrence et sa syntaxe concise. Dans Golang, la panique est un mécanisme de gestion des exceptions permettant de gérer les erreurs irrécupérables et les situations inattendues, similaire aux mécanismes de gestion des exceptions ou des erreurs dans d'autres langages de programmation.

Qu'est-ce que la panique ?

Lorsqu'une erreur ou une exception non gérée se produit pendant l'exécution du programme, le programme génère une erreur de panique. La panique est le mécanisme utilisé par le langage Golang pour gérer les erreurs irrécupérables et constitue également un mécanisme de gestion des exceptions. La panique est généralement causée par des problèmes inattendus lors de l'exécution du programme, empêchant le programme de fonctionner normalement. Il déclenche certaines opérations de nettoyage avant que le programme ne plante, puis arrête son exécution.

Syntaxe de panique

En Golang, la syntaxe de panique est très simple, il suffit d'appeler la fonction panic(). Voici la syntaxe :

panic("Une erreur s'est produite")

Lors de l'appel de la fonction panic(), vous pouvez fournir un message d'erreur pour faciliter le débogage de votre code. Si aucun message d'erreur n'est fourni, la fonction panic() générera un message d'erreur par défaut.

Le code suivant montre comment utiliser panic :

package main

import "fmt"

func main() {

fmt.Println("Go Panic Example")
panic("Something went wrong")
fmt.Println("Program Restarts from Here")

}

Sortie :

Go Panic Exemple
panic : Quelque chose s'est mal passé

goroutine 1 [en cours d'exécution] :
main.main()

    /Users/akhil/Documents/Go/src/main.go:7 +0x39

état de sortie 2

Dans l'exemple ci-dessus, lorsque le programme exécute l'instruction panic(), le programme arrêtera l'exécution et affichera le message d'erreur "Quelque chose s'est mal passé" .

Catching Panic

Parce que Panic peut entraîner l'arrêt de l'exécution d'un programme, cela rend la gestion des erreurs à l'aide de Panic potentiellement délicate dans certains cas. Afin d'empêcher le programme de s'arrêter en raison d'une panique, Golang fournit un mécanisme de gestion de la panique afin que le programme puisse continuer à s'exécuter après une panique.

Il existe deux façons d’attraper la panique. La première consiste à utiliser la fonction recovery(), qui peut récupérer l’erreur de panique générée. La deuxième méthode consiste à utiliser une instruction defer pour détecter la panique. L'instruction defer sera exécutée avant le retour de la fonction.

Voici la syntaxe pour capturer Panic à l'aide de la fonction recovery() :

func main() {

fmt.Println("Go Panic Example")
defer func(){
    if r := recover(); r != nil {
        fmt.Println("Recovered from : ", r)
    }
}()
panic("Something went wrong")
fmt.Println("Program Restarts from Here")

}

Sortie :

Exemple Go Panic
Récupéré de : Quelque chose s'est mal passé

Dans le code ci-dessus , Nous utilisons la fonction defer() pour attraper Panic. Lorsque la panique se produit, l'instruction defer sera exécutée et la fonction recovery() sera exécutée pour récupérer l'erreur de panique. Nous avons ensuite imprimé le message d'erreur "Récupéré de : Quelque chose s'est mal passé".

Nous pouvons également utiliser plusieurs instructions de report pour attraper Panic. Par exemple, le code suivant montre l'utilisation de plusieurs instructions defer pour détecter Panic :

func main() {

fmt.Println("Go Panic Example")
defer func(){
    if r := recover(); r != nil {
        fmt.Println("Recovered from : ", r)
    }
}()
defer fmt.Println("This will be printed first")
panic("Something went wrong")
defer fmt.Println("This will be printed last")
fmt.Println("Program Restarts from Here")

}

Sortie :

Exemple Go Panic
Ceci sera imprimé en premier
Récupéré de : Quelque chose s'est mal passé
Ceci sera imprimé en dernier

Dans le code ci-dessus, nous utilisons plusieurs instructions defer, la première instruction defer est exécutée avant que Panic ne se produise et la deuxième instruction defer est exécutée après la récupération de Panic. L'ordre d'exécution est l'inverse de l'ordre dans lequel ils apparaissent dans le code.

Remarque : une fois la panique survenue, le programme cessera d'exécuter les instructions defer et aucune instruction defer ne sera exécutée. Par conséquent, vous devez prendre en compte les opérations effectuées avant que la panique ne se produise pour vous assurer qu'aucune donnée importante n'est perdue.

Résumé

Grâce à l'introduction de cet article, vous avez déjà compris l'usage de la panique dans Golang et le mécanisme de capture de la panique. Lorsque vous utilisez Panic pour la gestion des erreurs, il faut veiller à ce que le programme ne plante pas en raison d'erreurs non gérées. Et, en cas de problème, assurez-vous de prendre les mesures appropriées pour protéger vos données et d'autres parties de votre application.

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!

Déclaration:
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
Article précédent:Golang construit un websocketArticle suivant:Golang construit un websocket