La gestion des paniques dans Go implique l'impression d'un message d'erreur suivi d'une pile d'appels. Cependant, ce comportement par défaut masque souvent la source réelle de l'erreur, ce qui rend le débogage difficile.
Considérez l'extrait de code suivant :
value, err := some3rdpartylib.DoSomething() if err != nil { panic(err) }
Si l'erreur n'est pas nulle, le message de panique qui en résulte inclura l'explication de l'erreur mais pas la ligne de code spécifique qui a provoqué le retour de l'erreur.
Pour retracer l'erreur jusqu'à sa source, une option consiste à utiliser le package d'erreurs. En implémentant la méthode StackTrace() dans vos types d'erreurs, vous pouvez accéder à la trace de pile associée à l'erreur.
type stackTracer interface { StackTrace() errors.StackTrace } err, ok := err.(stackTracer) // Check if error implements stackTracer if !ok { // Handle case where error doesn't implement stackTracer } stack := err.StackTrace() fmt.Println(stack) // Print the stack trace
De plus, il existe d'autres bibliothèques tierces bibliothèques qui développent les capacités de gestion des erreurs par défaut de Go :
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!