Maison > développement back-end > Golang > Comment récupérer des paniques « aucun serveur accessible » lors de la connexion à MongoDB avec MGO in Go ?

Comment récupérer des paniques « aucun serveur accessible » lors de la connexion à MongoDB avec MGO in Go ?

Barbara Streisand
Libérer: 2024-11-16 08:01:02
original
299 Les gens l'ont consulté

How to Recover from

Golang / Mongo : gestion de la panique « Aucun serveur accessible »

Problème :

Quand en essayant de se connecter à Mongo avec MGO dans Go, une panique éclate si le serveur est inaccessible. Comment récupérer cette panique pour permettre au programme de continuer son exécution ?

Réponse :

Pour gérer la panique déclenchée par MGO lorsqu'aucun serveur accessible n'est disponible, le le code suivant peut être utilisé :

import (
    "labix.org/v2/mgo"
)

func connectToMongo() bool {
    // Define a flag to indicate success
    ret := false

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Detected panic")
        }
    }()

    maxWait := time.Duration(5 * time.Second)
    session, sessionErr := mgo.DialWithTimeout("localhost", 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
}
Copier après la connexion

Dans cette version modifiée :

  1. L'instruction defer est déplacée après l'appel DialWithTimeout, qui garantit qu'il s'exécute, que l'appel réussisse ou panique.
  2. À l'intérieur de la fonction defer, la fonction recovery() est utilisée pour intercepter la panique. Cela garantit que le programme ne se ferme pas à cause de la panique.
  3. L'instruction fmt.Println("Detected panic") est ajoutée pour indiquer qu'une panique a été détectée.
  4. Le var ok bool et euh, ok := r.(erreur) sont supprimés car ils sont inutiles pour ce scénario.

En incorporant ces modifications, le programme peut gérer la panique provoquée par l'incapacité de MGO à se connecter à Mongo et continuer l'exécution sans quitter.

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