我创建了一个自定义错误类型来包装错误,以便在 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>相反,即使错误为零,它也会打印出来。
慕仙森
慕妹3242003
天涯尽头无女友
交互式爱情
相关分类