package main import ( "encoding/json" "io/ioutil" "log" "os" "runtime" ) //初始化配置文件 func ReadConfig(config ...interface{}) { var r *os.File if len(config) > 1 { filepath, _ := config[0].(string) r, _ = os.Open(filepath) defer r.Close() bs, _ := ioutil.ReadAll(r) json.Unmarshal(bs, config[1]) } else { r, _ = os.Open("./config.json") defer r.Close() bs, _ := ioutil.ReadAll(r) json.Unmarshal(bs, config[0]) } } //出错拦截 func Catch() { if r := recover(); r != nil { log.Println(r) for skip := 0; ; skip++ { _, file, line, ok := runtime.Caller(skip) if !ok { break } go log.Printf("%v,%v\n", file, line) } } } ////捕获异常 //func Try(fun func(), handler func(interface{})) { // defer func() { // if err := recover(); err != nil { // for skip := 1; ; skip++ { // _, file, line, ok := runtime.Caller(skip) // if !ok { // break // } // go log.Printf("%v,%v\n", file, line) // } // handler(err) // } // }() // fun() //}