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 PathError struct{
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
时间: 2024-07-28 18:55:32