go 函数中,返回值未命名,发生了 panic,但是在函数内 recover 了,函数返回什么值?怎么解决?

297 阅读1分钟

我的学习仓库,欢迎交流学习:github.com/Benny66/goS…

go 函数中,返回值未命名,发生了 panic,但是在函数内 recover 了,函数返回什么值?怎么解决?

func test() error {
	var err error
	defer func() {
		if r := recover(); r != nil {
			err = errors.New(fmt.Sprintf("%s", r))
		}
	}()
	raisePanic()
	return err
}
func raisePanic() {
	panic("发生了错误")
}

以下是我的修改,要是兄弟们有其他解决方法请评论留言,欢迎交流学习


func test() error {
	var err error
	defer func() {
		if r := recover(); r != nil {
			err = errors.New(fmt.Sprintf("%s", r))
		}
	}()
	err = raisePanic()
	return err
}
func raisePanic() (err error) {
	defer func() {
		if r := recover(); r != nil {
			err = errors.New(fmt.Sprintf("raisePanic函数异常:%s", r))
		}
	}()
	panic("发生了错误")
}