Maison  >  Article  >  développement back-end  >  Intégration de la gestion des erreurs et de la journalisation des fonctions Golang

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

王林
王林original
2024-04-25 09:06:02403parcourir

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)
}

日志记录

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

import log

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

集成错误处理和日志记录

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

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

  // 其余代码
}

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
}
Gestion et journalisation intégrées des erreurs

Pour 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!

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