Wie kann ich Fehler „Keine erreichbaren Server' in der MGO-Bibliothek von Go ordnungsgemäß behandeln?

DDD
Freigeben: 2024-11-24 11:35:15
Original
672 Leute haben es durchsucht

How Can I Gracefully Handle

Panikbehandlung in Go: Behandlung von „Keine erreichbaren Servern“ in MGO

In Go-Programmen, die die MGO-Bibliothek verwenden, um eine Verbindung zu MongoDB herzustellen, tritt ein Problem auf Der Fehler „Keine erreichbaren Server“ kann dazu führen, dass ein Programm in Panik gerät und abrupt beendet wird. Damit Programme auch ohne MongoDB-Konnektivität weiter ausgeführt werden können, ist es wichtig, diese Panik ordnungsgemäß zu überwinden.

Im bereitgestellten Code wird die Funktion „recover()“ verwendet, um die Panik abzufangen. Die aktuelle Umsetzung reicht jedoch nicht aus, da die Panik immer noch zum Programmabbruch führt. Um dies zu beheben, wird unten eine modifizierte Version des Codes vorgestellt:

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")
    }
}
Nach dem Login kopieren

In diesem aktualisierten Code wird die Funktion „recover()“ innerhalb eines Defer-Blocks aufgerufen, um sicherzustellen, dass sie ausgeführt wird, bevor die Funktion zurückkehrt. Wenn innerhalb der connectToMongo()-Funktion eine Panik auftritt, fängt die Recovery()-Funktion diese ab und gibt die Panikmeldung aus. Dadurch kann das Programm weiter ausgeführt werden, anstatt vorzeitig beendet zu werden.

Durch Befolgen dieser Technik ist es möglich, den Fehler „Keine erreichbaren Server“ in MGO ordnungsgemäß zu behandeln, sodass Programme auch dann weiterarbeiten können, wenn MongoDB nicht verfügbar ist .

Das obige ist der detaillierte Inhalt vonWie kann ich Fehler „Keine erreichbaren Server' in der MGO-Bibliothek von Go ordnungsgemäß behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage