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") } }
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!