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号
浙公网安备 33010602011771号