package main
import "fmt"
func main(){
Try(func() {
panic("foo")
}, func(e interface{}) {
fmt.Println(e)
})
defer func(){ // 必须要先声明defer,否则不能捕获到panic异常
fmt.Println("c")
if err:=recover();err!=nil{
fmt.Println(err) // 这里的err其实就是panic传入的内容,55
}
fmt.Println("d")
}()
f()
}
func f(){
fmt.Println("a")
panic(55)
fmt.Println("b")
fmt.Println("f")
}
func Try(fun func(), handler func(interface{})) {
defer func() {
if err := recover(); err != nil {
handler(err)
}
}()
fun()
}
func try(f1 func(),f2 func()) {
defer func() {
err :=recover()
if err != nil {
f2()
}
}()
f1()
}
有疑问加站长微信联系(非本文作者)