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

Intégration de la gestion des erreurs et de la journalisation des fonctions Golang

王林
Libérer: 2024-04-25 09:06:02
original
449 Les gens l'ont consulté

L'intégration de la gestion des erreurs et de la journalisation dans Go comprend : l'utilisation du type d'erreur pour représenter les erreurs et la fourniture d'une représentation sous forme de chaîne de l'erreur. Utilisez le package de journalisation pour la journalisation, qui fournit des niveaux de journalisation et des fonctions standardisés pour la journalisation des messages. Utilisez la fonction error.Wrap() pour envelopper les erreurs dans une nouvelle erreur, en ajoutant des informations contextuelles supplémentaires. Cette intégration simplifie la gestion des erreurs, améliore la possibilité de débogage des applications et garantit la robustesse et la fiabilité des applications.

Intégration de la gestion des erreurs et de la journalisation des fonctions Golang

Gestion des erreurs et journalisation intégrées pour les fonctions Go

Dans les applications Go, la gestion des erreurs et la journalisation sont cruciales pour garantir la robustesse et l'observabilité de l'application. Cet article décrit comment intégrer les deux pour simplifier la gestion des erreurs et améliorer la possibilité de débogage de votre application.

Gestion des erreurs

Dans Go, les erreurs peuvent être représentées en utilisant le type erreur intégré. Ce type est une interface, donc n'importe quel type peut implémenter error et fournir une représentation sous forme de chaîne décrivant l'erreur. error 类型来表示错误。此类型是一个接口,因此任何类型都可以实现 error 并提供一个描述错误的字符串表示。

func myFunc() error {
  // 发生错误的代码

  return fmt.Errorf("错误:%s", err)
}
Copier après la connexion

日志记录

对于日志记录,Go 提供了 log 包。此包提供了一组标准化的日志级别(如 InfoError)以及一组函数用于记录消息。

import log

func main() {
  log.Println("这是一个信息消息")
  log.Printf("这是一个带格式的消息:%d", 42)
}
Copier après la connexion

集成错误处理和日志记录

要将错误处理与日志记录集成,可以使用 errors.Wrap()

func myFunc() error {
  if err := anotherFunc(); err != nil {
    return errors.Wrap(err, "myFunc 出错")
  }

  // 其余代码
}
Copier après la connexion

Logging

Pour la journalisation, Go fournit le package log. Ce package fournit un ensemble standardisé de niveaux de journalisation (tels que Info et Erreur) et un ensemble de fonctions pour la journalisation des messages.

import (
    "database/sql"
    "log"
)

func getUser(id int) (*User, error) {
    row := db.QueryRow("SELECT * FROM users WHERE id = ?", id)
    var u User
    if err := row.Scan(&u.ID, &u.Name); err != nil {
        return nil, errors.Wrap(err, "获取用户出错")
    }

    log.Printf("获取用户:%s", u.Name)
    return &u, nil
}
Copier après la connexion
Gestion et journalisation intégrées des erreursPour intégrer la gestion des erreurs à la journalisation, vous pouvez utiliser la fonction errors.Wrap(). Cette fonction enveloppe une erreur dans une nouvelle erreur, ajoutant des informations contextuelles supplémentaires.

rrreee

Dans ce cas,

myFunc()

enregistrera l'erreur provoquée par

anotherFunc() et ajoutera les informations contextuelles de "myFunc a mal tourné".

Cas pratique

Considérons une application Web simple qui utilise une bibliothèque de base de données pour interroger la table utilisateur. Nous pouvons utiliser la technique ci-dessus pour gérer les erreurs et les enregistrer : 🎜rrreee🎜Dans la fonction 🎜getUser()🎜, lorsqu'une erreur se produit, elle enveloppera l'erreur dans une nouvelle erreur tout en ajoutant les informations contextuelles de "get user error" . Il enregistre également les utilisateurs acquis avec succès. 🎜🎜En intégrant la gestion des erreurs à la journalisation, nous pouvons déboguer plus facilement les applications et identifier et résoudre rapidement les problèmes. Ceci est essentiel pour garantir la robustesse et la fiabilité 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!

É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