20 条回复  ·  2251 次点击
z1829909 小成 2024-12-31 15:11:25
我一般也是每层返回的时候包一些关键字, 相当于人肉造了一个栈.
xxlxiaxiaolei 初学 2024-12-31 15:12:43
@guanzhangzhang 真张馆长?我还有你 QQ 呢
Linxing 初学 2024-12-31 15:13:57
WithStack
pkoukk 小成 2024-12-31 15:18:08
一般我不会携带堆栈信息,太多了,去获取当前堆栈的资源消耗也太重了。 其实很简单啊,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} } }
lifei6671 小成 2024-12-31 15:19:45
@Ayanokouji #2 golang 的 1.21 可以直接用%w 来包裹 error ,也可以用 errors.join 来合并多个 error 。不需要第三方库了。
pkoukk 小成 2024-12-31 15:20:22
对你的 APPEND 的回复: 那你直接用 panic ,那玩意里面自带堆栈,去上游 revocer 。 喜欢 try catch 的,用 panic recover 去
123
返回顶部