package main
import (
"fmt"
)
type tryFunc func()
type catchFunc func(interface{})
// 建立一個模仿 try&catch 的函式供稍後使用
func Try(try tryFunc, catch catchFunc) {
// 這不會馬上被執行,但當 panic 被執行就會結束程式,結束程式就必定會呼叫 defer
defer func() {
// 透過 recover 來從 panic 狀態中恢復,並呼叫捕捉函式
if err := recover(); err != nil {
catch(err)
}
}()
// 執行可能帶有 panic 的程式
try()
}
func main() {
Try(func() {
panic("1") //报错之后不会下一步
panic("2")
}, func(a interface{}) {
fmt.Println(a)
})
}
有疑问加站长微信联系(非本文作者)