golang编程总结(六)go语句,错误处理与panic,
go语句
1.当通过go语句创建一个go routine时,会在空闲的routine队列中查找是否有空闲的routine,如果有就调度到运行的routine队列中,否则创建一个routine,然后等待运行,所以一条go语句执行到这个go语句的函数被执行,有一段等待的时间。
错误处理
当返回一个错误的时候,如何判断这个错误是什么
1.如果返回的错误类型是已知范围内的,用类型判断
2.返回的错误实例是预定义的,比较是否是预定义的错误
func underlyingError(err error) error {
switch err := err.(type) {
case *os.PathError:
return err.Err
case *os.LinkError:
return err.Err
case *os.SyscallError:
return err.Err
case *exec.Error:
return err.Err
}
return err
}
err = underlyingError(err)
switch err {
case os.ErrClosed:
fmt.Printf("error(closed)[%d]: %s\n", i, err)
case os.ErrInvalid:
fmt.Printf("error(invalid)[%d]: %s\n", i, err)
case os.ErrPermission:
fmt.Printf("error(permission)[%d]: %s\n", i, err)
}
如何构建一个错误体系
1.通过结构体组合的方式形成一种树行结构,通过类型断言来判断
2.预定义一些错误,通过提供判断两个错误是否相等的方法判断是否为同一个错误

浙公网安备 33010602011771号