主要问题
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
}