1,.error接口的定义
type error interface{
Error()string
}
2.error的使用
func Foo(param int)(n int,err error){
//函数定义
}
n,err:=Foo(0)
if err!=nil{
//错误处理
}else{
//使用返回值n
}
3.自定义error类型
- 定义一个承载错误信息的struct
type PathErrorstruct{
op string
path string
Err error
}
- 定义Error方法
func (e *PathError)Error()string{
return e.op+" "+e.path+":"+e.Err.Error()
}
defer:相当于C#中的Filnaly,总会被执行,并且他的执行顺序呢是先进后出
func CopyFile(dst, src string){
defer fmt.Println(dst)
defer fmt.Println(src)
fmt.Println("copy")
}
copy
c:2.txt
c:oem8.txt
panic:相当于throw,recover:相当于catch
defer func(){//必须要先声明defer,否则不能捕获到panic异常
if err := recover(); err !=nil{
fmt.Println(err)//这里的err其实就是panic传入的内容,55
}
}()
f()
func f(){
fmt.Println("a")
panic(55)
fmt.Println("b")
}
输出为
a
55
这里panic后面的fmt.Println("b")未被执行,所以后面的信息没有b