Ver Fonte

feat: 第3版

SongZihuan há 1 ano atrás
pai
commit
6ca3926b7e
3 ficheiros alterados com 28 adições e 7 exclusões
  1. 1 1
      baseclass.go
  2. 11 6
      errorclass.go
  3. 16 0
      utils.go

+ 1 - 1
baseclass.go

@@ -2,7 +2,7 @@ package errors
 
 const UnknownError = "UNKNOWN"
 
-var BaseError = NewClass("base", "unknown error reason")
+var BaseError = newBaseClass("base", "unknown error reason")
 
 func Errorf(format string, a ...any) WTError {
 	return BaseError.Errorf(format, a...)

+ 11 - 6
errorclass.go

@@ -11,15 +11,16 @@ type WTErrorClass interface {
 	Code() string
 	Msg() string
 
-	New() WTError
-	Errorf(format string, a ...any) WTError
-	Warp(err error, format string, a ...any) WTError
-	WarpQuick(err error) WTError
+	New(...string) WTError
+	Errorf(string, ...any) WTError
+	Warp(error, string, ...any) WTError
+	WarpQuick(error) WTError
 }
 
 type wtErrorClass struct {
 	code string
 	msg  string
+	base bool
 }
 
 func (c *wtErrorClass) WTErrorClass() {}
@@ -32,8 +33,12 @@ func (c *wtErrorClass) Msg() string {
 	return c.msg
 }
 
-func (c *wtErrorClass) New() WTError {
+func (c *wtErrorClass) New(msgList ...string) WTError {
 	msg := c.msg
+	if len(msgList) != 0 {
+		msg = msgList[0]
+	}
+
 	code := c.code
 	cause := error(nil)
 	stack := getStack()
@@ -94,7 +99,7 @@ func (c *wtErrorClass) WarpQuick(err error) WTError {
 	}
 
 	var wtErr WTError
-	if errors.As(err, &wtErr) && wtErr.Code() == c.code {
+	if errors.As(err, &wtErr) && (c.base || wtErr.Code() == c.code) {
 		return wtErr
 	}
 

+ 16 - 0
utils.go

@@ -16,6 +16,22 @@ func NewClass(code string, msgList ...string) WTErrorClass {
 	return &wtErrorClass{
 		msg:  msg,
 		code: code,
+		base: false,
+	}
+}
+
+func newBaseClass(code string, msgList ...string) WTErrorClass {
+	var msg string
+	if len(msgList) == 0 {
+		msg = strings.Replace(code, "_", " ", -1)
+	} else {
+		msg = msgList[0]
+	}
+
+	return &wtErrorClass{
+		msg:  msg,
+		code: code,
+		base: true,
 	}
 }