提交 b8332d53 authored 作者: 赵雪如's avatar 赵雪如

修改errors msg为 可变msg

上级 cc78ef25
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"github.com/gogf/gf/errors/gcode" "github.com/gogf/gf/errors/gcode"
"github.com/gogf/gf/errors/gerror" "github.com/gogf/gf/errors/gerror"
"strings"
"sync" "sync"
) )
...@@ -22,7 +23,7 @@ type BizCode struct { ...@@ -22,7 +23,7 @@ type BizCode struct {
M string M string
// Ref specify the reference document. // Ref specify the reference document.
Ref string Ref interface{}
} }
func init() { func init() {
...@@ -37,6 +38,7 @@ func (c BizCode) Message() string { ...@@ -37,6 +38,7 @@ func (c BizCode) Message() string {
return c.M return c.M
} }
func (c BizCode) Detail() interface{} { func (c BizCode) Detail() interface{} {
return c.Ref return c.Ref
} }
...@@ -44,18 +46,21 @@ func (c BizCode) Detail() interface{} { ...@@ -44,18 +46,21 @@ func (c BizCode) Detail() interface{} {
var codes = map[int]gcode.Code{} var codes = map[int]gcode.Code{}
var codeMux = &sync.Mutex{} var codeMux = &sync.Mutex{}
func MustRegister(coder gcode.Code) { func MustRegister(code int, message string) {
if coder.Code() < 1000 { if code < 1000 {
panic("Codes less than 1000 are reserved as internal codes") panic("Codes less than 1000 are reserved as internal codes")
} }
codeMux.Lock() codeMux.Lock()
defer codeMux.Unlock() defer codeMux.Unlock()
if _, ok := codes[coder.Code()]; ok { if _, ok := codes[code]; ok {
panic(fmt.Sprintf("code: %d already exist", coder.Code())) panic(fmt.Sprintf("code: %d already exist", code))
} }
codes[coder.Code()] = coder codes[code] = BizCode{
C: code,
M: message,
}
} }
func ParseCoder(err error) gcode.Code { func ParseCoder(err error) gcode.Code {
...@@ -65,9 +70,12 @@ func ParseCoder(err error) gcode.Code { ...@@ -65,9 +70,12 @@ func ParseCoder(err error) gcode.Code {
} }
if v, ok := code.(BizCode); ok { if v, ok := code.(BizCode); ok {
fmt.Println(333)
if coder, ok := codes[v.C]; ok { if coder, ok := codes[v.C]; ok {
return coder return BizCode{
C: coder.Code(),
M: strings.Replace(coder.Message(),"%%0", v.M, -1),
Ref : coder.Detail(),
}
} }
} }
......
...@@ -7,17 +7,12 @@ import ( ...@@ -7,17 +7,12 @@ import (
) )
func init() { func init() {
MustRegister(BizCode{ MustRegister(100001, "我是%%0")
C: 100001, MustRegister(100002, "%%0不是我")
M: "success", MustRegister(100003, "不是我")
})
MustRegister(BizCode{
C: 100002,
M: "参数错误",
})
} }
func Test(t *testing.T) { func Test(t *testing.T) {
err := gerror.NewCode(New(1000, "", ""), "My Error") err := gerror.NewCode(New(100002, "zxr", ""), "")
c := ParseCoder(err) c := ParseCoder(err)
fmt.Println(c.Message()) fmt.Println(c.Message())
} }
...@@ -9,14 +9,10 @@ import ( ...@@ -9,14 +9,10 @@ import (
"testing" "testing"
) )
func init() { func init() {
errors.MustRegister(errors.BizCode{ errors.MustRegister(100001,
C: 100001, "success")
M: "success", errors.MustRegister(100002,
}) "参数错误")
errors.MustRegister(errors.BizCode{
C: 100002,
M: "参数错误",
})
} }
func TestJsonExit(t *testing.T) { func TestJsonExit(t *testing.T) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论