我有问题 如何使用panic修改返回值并在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
}
答案 0 :(得分: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
}