Gestion de la panique dans Go : gestion des "serveurs non accessibles" dans MGO
Les programmes In Go utilisant la bibliothèque MGO pour se connecter à MongoDB, rencontrant une erreur « aucun serveur accessible » peut provoquer la panique et la fermeture brusque d'un programme. Pour permettre aux programmes de poursuivre leur exécution même en l'absence de connectivité MongoDB, il est crucial de se remettre de cette panique avec élégance.
Dans le code fourni, la fonction recovery() est utilisée pour attraper la panique. Cependant, la mise en œuvre actuelle est insuffisante, car la panique conduit toujours à l'arrêt du programme. Pour remédier à cela, une version modifiée du code est présentée ci-dessous :
package main import ( "fmt" "time" ) import ( "labix.org/v2/mgo" ) func connectToMongo() bool { ret := false fmt.Println("enter main - connecting to mongo") // Defer and recover from potential panic defer func() { if r := recover(); r != nil { fmt.Println("Detected panic") var ok bool err, ok := r.(error) if !ok { fmt.Printf("pkg: %v, error: %s", r, err) } } }() maxWait := time.Duration(5 * time.Second) session, sessionErr := mgo.DialWithTimeout("localhost:27017", maxWait) if sessionErr == nil { session.SetMode(mgo.Monotonic, true) coll := session.DB("MyDB").C("MyCollection") if coll != nil { fmt.Println("Got a collection object") ret = true } } else { // never gets here fmt.Println("Unable to connect to local mongo instance!") } return ret } func main() { if connectToMongo() { fmt.Println("Connected") } else { fmt.Println("Not Connected") } }
Dans ce code mis à jour, la fonction recovery() est appelée dans un bloc defer, garantissant qu'elle est exécutée avant le retour de la fonction. Si une panique se produit dans la fonction connectToMongo(), la fonction recovery() l'attrape et imprime le message de panique. Cela permet au programme de continuer à s'exécuter, plutôt que de se terminer prématurément.
En suivant cette technique, il est possible de gérer l'erreur « aucun serveur accessible » avec élégance dans MGO, permettant aux programmes de continuer à fonctionner même lorsque MongoDB n'est pas disponible. .
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!