go-zero
go-zero copied to clipboard
Differentiate between params error and other errors
现在参数解析的httpx.Parse()返回的错误不会区分是参数错误还是其他错误,希望区分开来。(因为参数错误可以显示给请求方,其他错误需要自定义处理隐藏) 而现在httpx.Parse()触发的错误都是没有导出的error变量(errTypeMismatch,errValueNotSettable,errValueNotStruct),没办法用errors.Is()来判断其类型。 希望提供一种机制,可以让用户侧的程序可以区分httpx.Parse()的返回error是参数错误还是其他错误。
我的想法:
- 在Go>=1.20版本,可以新建一个可导出的ErrParamsError(标准error),使用multi error组合original error+ErrParamsError,这样用户侧可以用errors.Is(err, ErrParamsError)来判断。
- 在Go<1.20版本,可以新建一个可导出的ErrParamsError(标准error的增强,自己实现嵌套error)包装以上未导出error变量,这样用户侧也可以用errors.Is(err, ErrParamsError)来判断。