Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Menangani Ralat 'Tiada Pelayan Boleh Dicapai' dalam Perpustakaan MGO Go?
Pengendalian Panik dalam Go: Mengendalikan "Tiada Pelayan Boleh Dicapai" dalam MGO
Program In Go menggunakan perpustakaan MGO untuk menyambung ke MongoDB, menghadapi ralat "tiada pelayan boleh dicapai" boleh menyebabkan program panik dan keluar secara tiba-tiba. Untuk membenarkan program meneruskan pelaksanaan walaupun tanpa ketersambungan MongoDB, adalah penting untuk pulih daripada panik ini dengan anggun.
Dalam kod yang disediakan, fungsi recover() digunakan untuk menangkap panik. Walau bagaimanapun, pelaksanaan semasa tidak mencukupi, kerana panik masih membawa kepada penamatan program. Untuk membetulkannya, versi kod yang diubah suai dibentangkan di bawah:
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") } }
Dalam kod yang dikemas kini ini, fungsi recover() dipanggil dalam blok tangguh, memastikan ia dilaksanakan sebelum fungsi kembali. Jika panik berlaku dalam fungsi connectToMongo(), fungsi recover() menangkapnya dan mencetak mesej panik. Ini membenarkan atur cara untuk terus melaksanakan, dan bukannya ditamatkan lebih awal.
Dengan mengikuti teknik ini, adalah mungkin untuk mengendalikan ralat "tiada pelayan boleh dicapai" dengan anggun dalam MGO, membenarkan atur cara untuk terus beroperasi walaupun MongoDB tidak tersedia .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangani Ralat 'Tiada Pelayan Boleh Dicapai' dalam Perpustakaan MGO Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!