/** golang defer */ package main import ( "fmt" ) var p = fmt.Println var pf = fmt.Printf func div(a, b int) int { defer func() { //func recover() interface{} recover为内建函数 err := recover() if err != nil { p(err) } }() return a / b } /* 内建的接口 error type error interface { Error() string } */ type MyError struct { ErrorInfo string } func (this *MyError) Error() string { return this.ErrorInfo } func main() { div(2, 0) p("------main--------") defer func() { p("----main finally1------") err := recover() if err != nil { p(err) } }() defer func() { p("----main finally2------") err := recover() if err != nil { p(err) panic(MyError{ErrorInfo: "又一个测试"}) } }() //func panic(v interface{}) 一个error panic(MyError{ErrorInfo: "这个一个测试"}) }
golang 异常处理
最新推荐文章于 2024-02-01 00:49:42 发布