1.go语言中没有其他语言中的try/catch机制
2.在go语言中可以使用panic来抛出异常,使用recover方法来处理异常,通常recover方法写在每个方法defer模块中,在方法return前执行处理
func panic(n interface{})/入参是个空接口意味着可以传递任意类型
func recover() interface{}//反参是空接口意味着可以返回任意类型
3.go语言中的异常接口
type error interface{
Error()
}
如果要使用创建该接口的实例只需要使用结构体实现该接口的Error的方法即可,go中内置了创建接口实例的方法
errors.new("异常信息")//返回的是error接口实例,接口中方法重写Error方法返回的是,字符串异常信息
fmt.Errorf()
4.开发中的常用技巧
type error struct {
code int
message string
}
func (e error) Error() string {
return fmt.Sprintf("error:", e.code)
}
func main() {
defer func() {
i := recover()
e, ok := i.(error)
if ok {
if e.code == 1 {
fmt.Println(e.message)
}
}
}()
panic(error{1, "FGDDGFGD"})