123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package errors
- import (
- "errors"
- "fmt"
- )
- type WTErrorClass interface {
- WTErrorClass_TAG()
- Code() string
- Msg() string
- 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_TAG() {}
- func (c *wtErrorClass) Code() string {
- return c.code
- }
- func (c *wtErrorClass) Msg() string {
- return c.msg
- }
- 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()
- return &wtError{
- class: c,
- cause: cause,
- msg: msg,
- code: code,
- stack: stack,
- }
- }
- func (c *wtErrorClass) Errorf(format string, a ...any) WTError {
- msg := fmt.Sprintf(format, a...)
- code := c.code
- cause := error(nil)
- stack := getStack()
- return &wtError{
- class: c,
- cause: cause,
- msg: msg,
- code: code,
- stack: stack,
- }
- }
- func (c *wtErrorClass) Warp(err error, format string, a ...any) WTError {
- if err == nil {
- return nil
- }
- msg := fmt.Sprintf(format, a...)
- code := c.code
- cause := err
- stack := ""
- var wtErr WTError
- if errors.As(err, &wtErr) {
- stack = wtErr.Stack()
- } else {
- stack = getStack()
- }
- return &wtError{
- class: c,
- cause: cause,
- msg: msg,
- code: code,
- stack: stack,
- }
- }
- func (c *wtErrorClass) WarpQuick(err error) WTError {
- if err == nil {
- return nil
- }
- var wtErr WTError
- if errors.As(err, &wtErr) && (c.base || wtErr.Code() == c.code) {
- return wtErr
- }
- msg := c.msg
- code := c.code
- cause := err
- stack := getStack()
- return &wtError{
- class: c,
- cause: cause,
- msg: msg,
- code: code,
- stack: stack,
- }
- }
|