Gestion des erreurs et reports
Dans Go, l'instruction defer est couramment utilisée pour exécuter une fonction ou une opération de nettoyage après le retour de la fonction environnante. Cependant, si la fonction différée renvoie une erreur, elle peut être négligée en raison de la pratique typique consistant à ignorer l'erreur renvoyée par defer, ce qui peut entraîner un comportement inattendu du système.
Considérez le scénario suivant :
OpenDbConnection(connectionString string, logSql bool) (*gorm.DB, error) { logger := zap.NewExample().Sugar() defer logger.Sync() }
Dans cet exemple, la méthode logger.Sync() peut renvoyer une erreur qui est ignorée, laissant les problèmes potentiels non résolus.
Stratégies possibles
Voici un exemple utilisant la stratégie de variable d'erreur nommée :
func OpenDbConnection(connectionString string, logSql bool) (db *gorm.DB, err error) { logger := zap.NewExample().Sugar() defer func() { err = logger.Sync() }() // ... rest of function logic ... return db, err }
Avec cette approche, l'erreur peut être vérifié et géré dans la fonction appelante :
db, err := OpenDbConnection(connectionString, logSql) if err != nil { // Handle the error }
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!