我有一个问题如何修改返回值与恐慌和恢复在golang请帮帮我,谢谢!
func foo1() int {
defer func() {
if p := recover(); p != nil {
fmt.Printf("internal error: %v\n", p)
}
// how can I do?
}()
panic("test error")
return 10
}
Run Code Online (Sandbox Code Playgroud)
小智 7
一种方法是在func定义中命名返回值
package main
import "fmt"
func foo() (r int) {
defer func() {
if p := recover(); p != nil {
fmt.Printf("internal error: %v\n", p)
r = 5 // this modify the return value
}
}()
panic("test error")
return 3
}
func main() {
fmt.Println(foo()) // this print 5
}
Run Code Online (Sandbox Code Playgroud)