Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Pulih daripada panik 'Tiada Pelayan Boleh Dicapai' Apabila Menyambung ke MongoDB dengan MGO dalam Go?

Bagaimana untuk Pulih daripada panik 'Tiada Pelayan Boleh Dicapai' Apabila Menyambung ke MongoDB dengan MGO dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-11-16 08:01:02243semak imbas

How to Recover from

Golang / Mongo: Mengendalikan Panik "Tiada Pelayan Boleh Dicapai"

Masalah:

Bila cuba menyambung ke Mongo dengan MGO dalam Go, panik berlaku jika pelayan tidak dapat dihubungi. Bagaimanakah panik ini boleh dipulihkan untuk membolehkan program meneruskan pelaksanaan?

Jawapan:

Untuk mengendalikan panik yang dilemparkan oleh MGO apabila tiada pelayan yang boleh dicapai tersedia, kod berikut boleh digunakan:

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
}

Dalam diubah suai ini version:

  1. Pernyataan penangguhan dialihkan selepas panggilan DialWithTimeout, yang memastikan bahawa panggilan itu dilaksanakan tanpa mengira sama ada panggilan itu berjaya atau panik.
  2. Di dalam fungsi tangguh, recover() fungsi digunakan untuk menangkap panik. Ini memastikan program tidak keluar kerana panik.
  3. Pernyataan fmt.Println("Panik yang dikesan") ditambah untuk menunjukkan bahawa panik telah dikesan.
  4. The var ok bool dan err, ok := r.(error) dialih keluar kerana ia tidak diperlukan untuk ini senario.

Dengan menggabungkan perubahan ini, program ini boleh menangani panik yang disebabkan oleh ketidakupayaan MGO untuk menyambung ke Mongo dan meneruskan pelaksanaan tanpa keluar.

Atas ialah kandungan terperinci Bagaimana untuk Pulih daripada panik 'Tiada Pelayan Boleh Dicapai' Apabila Menyambung ke MongoDB dengan MGO dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn