一般我不会携带堆栈信息,太多了,去获取当前堆栈的资源消耗也太重了。
其实很简单啊,error 是个 interface ,return error 的时候变成 retrun MyError(code,err)就行了
额外附加一个 code 足矣.
这是个简单的示例,实际上还可以做很多事情在里面
func MyError(code int, err error) error {
if errors.As(err, &myError{}) {
return err
} else {
return &myError{code: code, source: err}
}
} |