Go错误处理(二)
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 stringpath stringErr 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
浙公网安备 33010602011771号