/src/pkg/common/errors.go

https://code.google.com/p/gomemcached/ · Go · 41 lines · 34 code · 7 blank · 0 comment · 6 complexity · 12c6a059dfb6d346021ad03a5da994b7 MD5 · raw file

  1. package common
  2. import (
  3. "os"
  4. "log"
  5. "flag"
  6. )
  7. var debug = flag.Bool("d", true, "print additional debug output")
  8. func Traceln(v ...interface{}) {
  9. if *debug {
  10. log.Println(v...)
  11. }
  12. }
  13. func SafelyDo(fname string, f func()) {
  14. defer func() {
  15. if err := recover(); err != nil {
  16. log.Printf("Goroutine %s terminated: %v\n", fname, err)
  17. }
  18. }()
  19. f()
  20. }
  21. func test(f func(string, ...interface{}),
  22. err os.Error, msg string) {
  23. if err != nil {
  24. f("Fail: %s\n%v\n", msg, err)
  25. return
  26. }
  27. Traceln("Ok:", msg)
  28. }
  29. func Testp(err os.Error, msg string) {
  30. test(log.Panicf, err, msg)
  31. }
  32. func Teste(err os.Error, msg string) {
  33. test(log.Fatalf, err, msg)
  34. }