Heim >Backend-Entwicklung >Golang >Wie kann ich die Panik „Keine erreichbare Server' beheben, wenn ich mit MGO in Go eine Verbindung zu MongoDB herstelle?

Wie kann ich die Panik „Keine erreichbare Server' beheben, wenn ich mit MGO in Go eine Verbindung zu MongoDB herstelle?

Barbara Streisand
Barbara StreisandOriginal
2024-11-16 08:01:02243Durchsuche

How to Recover from

Golang / Mongo: Umgang mit der Panik „Keine erreichbare Server“

Problem:

Wann Beim Versuch, mit MGO in Go eine Verbindung zu Mongo herzustellen, wird eine Panik ausgelöst, wenn der Server nicht erreichbar ist. Wie kann diese Panik behoben werden, damit das Programm weiterhin ausgeführt werden kann?

Antwort:

Um die von MGO ausgelöste Panik zu bewältigen, wenn keine erreichbaren Server verfügbar sind, muss die Folgender Code kann verwendet werden:

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
}

In dieser modifizierten Version:

  1. The defer Die Anweisung wird nach dem DialWithTimeout-Aufruf verschoben, wodurch sichergestellt wird, dass sie unabhängig davon ausgeführt wird, ob der Aufruf erfolgreich ist oder in Panik gerät.
  2. Innerhalb der Defer-Funktion wird die Funktion „recover()“ verwendet, um die Panik abzufangen. Dadurch wird sichergestellt, dass das Programm aufgrund der Panik nicht beendet wird.
  3. Die Anweisung fmt.Println("Detected panic") wird hinzugefügt, um anzuzeigen, dass eine Panik erkannt wurde.
  4. Die Variable ok bool und err, ok := r.(error) werden entfernt, da sie für dieses Szenario unnötig sind.

Durch die Einbeziehung dieser Änderungen werden die Das Programm kann mit der Panik umgehen, die dadurch entsteht, dass MGO keine Verbindung zu Mongo herstellen und die Ausführung fortsetzen kann, ohne es zu beenden.

Das obige ist der detaillierte Inhalt vonWie kann ich die Panik „Keine erreichbare Server' beheben, wenn ich mit MGO in Go eine Verbindung zu MongoDB herstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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