错误:
创建错误
1)fmt包下提供的方法
fmt.Errorf(" 格式化字符串信息 " , 空接口类型对象 )
2)errors包下提供的方法
errors.New(" 字符串信息 ")
创建自定义错误
需要实现error接口,而error接口只包含一个方法Error(),实现该方法就实现error接口。
这里 用*areaError来接收方法Error(),表明指针areaError类型实现error接口。
circleArea()方法返回错误类型对象为 &areaError{ }
rectArea()方法返回错误类型对象为 &areaError{ }
在main()方法中使用断言
_, err := rectArea()
if areaErrorPointerObj,judgeValue= err.(*areaError) ; judgeValue{ }
defer(),panic(),recover()
panic()会中断程序执行,从运行到panic此处时,后面所有的代码都不在执行。
除了延迟函数defer(),defer()调用在panic()之前时,会在程序中断时仍然最后执行。这是程序在panic()后唯一能继续运行的救命稻草,那就是在defer()中使用recover()恢复程序运行。并且recover( )返回值会携带panic(参数)函数中的参数信息