Я создал собственный тип ошибок, чтобы обернуть ошибки для упрощения отладки в Golang.Это работает, когда есть ошибки, чтобы напечатать, но теперь это вызывает панику.
Демонстрация
type Error struct {
ErrString string
}
func (e *Error) Error() string {
return e.ErrString
}
func Wrap(err error, str string) *Error {
if err == nil {
return nil
}
e := &Error{
ErrString: str + err.Error(),
}
return e
}
Когда я вызываю функцию, она не возвращает ошибку, я все равно должен иметь возможность обернуть ошибку.
Ожидаемое поведение таково: если ошибка равна нулю, она должна просто игнорировать ее, к сожалению, она делает обратное.
func foo() error {
err := bar()
return Wrap(err, "bar called")
}
func bar() error {
return nil
}
func main() {
err := foo()
if err != nil {
fmt.Printf("Found error %v\n",err)
return
}
fmt.Println("No Errors")
}
Я ожидаю, что она напечатает No errors
.Вместо этого он печатает Found error <nil>
, даже если ошибка равна нулю.