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.预定义一些错误,通过提供判断两个错误是否相等的方法判断是否为同一个错误

posted @ 2022-03-02 17:52  故意写bug  阅读(70)  评论(0)    收藏  举报