假设我有以下代码:
package lib
import (
"errors"
"strconv"
)
var ErrSomething = errors.New("foobar")
func SomeFunc(str string) (int, error) {
i, err := strconv.Atoi(str)
if err != nil {
// how to combine ErrSomething with err?
return 0, fmt.Errorf("%w: %w", ErrSomething, err)
}
// do other things, potentially return other errors
return i
}
如何将返回的错误strconv.Atoi与我的命名错误结合起来ErrSomething。组合的原因是我的用户SomeFunc()可以使用我的错误“常量”检查到底出了什么问题,同时不会丢失有关潜在错误的信息。
我读过类似的问题,但通常的答案是这样做:return 0, fmt.Errorf("foobar: %w", err)但是这样我的用户就无法使用检查错误errors.Is(err, ???)
富国沪深
相关分类