运行您发布的代码的以下版本。尽量不要修改代码,至少不要更改行号的位置。这样,如果您发布堆栈跟踪,则数字将匹配。
package mainimport ( "fmt" "time")import ( "labix.org/v2/mgo")func connectToMongo() bool { ret := false fmt.Println("enter main - connecting to mongo") // tried doing this - doesn't work as intended 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") }}
当MongoDB启动时,我看到:
enter main - connecting to mongoGot a collection objectConnected
当MongoDB关闭时,我看到:
enter main - connecting to mongoUnable to connect to local mongo instance!Not Connected
如果您没有看到相同的行为,请发布输出,包括看到的恐慌。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)