主要问题
err 重定义
func testErrors() error { if err := exampleError(); err != nil { return err } if err := exampleError(); err != nil { return err } if err := exampleError(); err != nil { return err } // err 不能在此处使用 return nil}
err != nil 检查
func testErrors() error { err := exampleError() if err != nil { return err } return nil}
解决方案
check 方法
func testErrors() (err error) { defer func() { if r := recover(); r != nil { err = fmt.Errorf("testErrors caught error: %+v", r) } }() check := func(err error) { if err != nil { panic(err) } } check(exampleError()) check(exampleError()) check(exampleError()) return nil}