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

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

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal