defer中拿不到返回值?

EddieChan1993 · · 1420 次点击
我recover捕获到了panic
#2
更多评论
都panic 了,你去哪拿返回值啊
#1
return、defer执行顺序应该是: 1. return要返回值的赋值操作(nil) 2. defer语句 (这个时间对err赋值已经晚了,因为return将要返回的值已经进行过赋值,nil) 3. return 这样的步骤吧,如果想赋值可以这样 ``` package main import "fmt" func main() { fmt.Println(Parse()) } func Parse()(err error){ defer func() { //选择性的recover switch p := recover(); p { case nil: case "what": err = fmt.Errorf("internal error") fmt.Println(err) default: panic(p) } }() panic("what") return err } ``` 具体的可以看这篇博文:https://my.oschina.net/henrylee2cn/blog/505535
#3