util.go 1016 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "runtime"
  8. )
  9. //初始化配置文件
  10. func ReadConfig(config ...interface{}) {
  11. var r *os.File
  12. if len(config) > 1 {
  13. filepath, _ := config[0].(string)
  14. r, _ = os.Open(filepath)
  15. defer r.Close()
  16. bs, _ := ioutil.ReadAll(r)
  17. json.Unmarshal(bs, config[1])
  18. } else {
  19. r, _ = os.Open("./config.json")
  20. defer r.Close()
  21. bs, _ := ioutil.ReadAll(r)
  22. json.Unmarshal(bs, config[0])
  23. }
  24. }
  25. //出错拦截
  26. func Catch() {
  27. if r := recover(); r != nil {
  28. log.Println(r)
  29. for skip := 0; ; skip++ {
  30. _, file, line, ok := runtime.Caller(skip)
  31. if !ok {
  32. break
  33. }
  34. go log.Printf("%v,%v\n", file, line)
  35. }
  36. }
  37. }
  38. ////捕获异常
  39. //func Try(fun func(), handler func(interface{})) {
  40. // defer func() {
  41. // if err := recover(); err != nil {
  42. // for skip := 1; ; skip++ {
  43. // _, file, line, ok := runtime.Caller(skip)
  44. // if !ok {
  45. // break
  46. // }
  47. // go log.Printf("%v,%v\n", file, line)
  48. // }
  49. // handler(err)
  50. // }
  51. // }()
  52. // fun()
  53. //}