2026-03-16 13:40:53 +08:00
|
|
|
|
package errors
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"errors"
|
|
|
|
|
|
"fmt"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-06-09 23:08:03 +08:00
|
|
|
|
var ErrLoginFailed = errors.New("login failed")
|
2026-03-16 13:40:53 +08:00
|
|
|
|
|
2026-06-16 18:33:13 +08:00
|
|
|
|
// AppError 携带操作名(Op)与中文提示(Msg)的错误类型,用于统一日志与错误上报。
|
|
|
|
|
|
type AppError struct {
|
2026-03-16 13:40:53 +08:00
|
|
|
|
Op string
|
|
|
|
|
|
Err error
|
|
|
|
|
|
Msg string
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-16 18:33:13 +08:00
|
|
|
|
func (e *AppError) Error() string {
|
2026-03-16 13:40:53 +08:00
|
|
|
|
if e.Msg != "" {
|
|
|
|
|
|
return fmt.Sprintf("%s: %s: %v", e.Op, e.Msg, e.Err)
|
|
|
|
|
|
}
|
|
|
|
|
|
return fmt.Sprintf("%s: %v", e.Op, e.Err)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-16 18:33:13 +08:00
|
|
|
|
func (e *AppError) Unwrap() error {
|
2026-03-16 13:40:53 +08:00
|
|
|
|
return e.Err
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func New(op string, err error, msg string) error {
|
2026-06-16 18:33:13 +08:00
|
|
|
|
return &AppError{
|
2026-03-16 13:40:53 +08:00
|
|
|
|
Op: op,
|
|
|
|
|
|
Err: err,
|
|
|
|
|
|
Msg: msg,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|