本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

约定

一、异常的使用场景

什么情况下用错误表达,什么情况下用异常表达,就得有一套约定,否则很容易出现一切皆错误或一切皆异常的情况

1.空指针引用

2.下标越界

3.除数为0

4.不应该出现的分支,比如default

二、约定

  • 错误:

1.失败的原因只有一个时,不使用error,返回bool类型

// 错误的原因只有一个
func ValidName(name string) error {

if name != "halle" {

return errors.New("name is not hallen")
}
return nil

}

2.没有失败时,不使用error

type Person2 struct {
Name string
}
// 不会发生错误
func (p *Person2)GetName(str string) error{
p.Name = str
return nil
}

3.error应放在返回值类型列表的最后

4.错误值统一定义

errors.New("name is not hallen")

这里面的错误信息,使用预定义常量,不要临时定义错误信息

5.当上层函数不关心错误时,建议不返回error

  • 异常

1.在程序部署后,应恢复异常避免程序终止

2.在分支语句中,对现有的判断以外的应作异常处理(default中)

1292人已阅读,今天你学习了吗?

添加新回复