「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」。
0 环境
- 系统环境:win10
- 编辑器:vscode
- go版本:gol.17.3
- 参考文章:go语言中文文档
1 错误
可预见的错误(掌握范围内的错误,返回错误,让开发者处理),不影响程序正常运行。
2 error
1 初识
strconv.Atoi当遇到"字母"会报错,不能转化,引文它需要是"数字"这类的。
也就说方法或函数,第二个返回值是一个error,只需要如上代码那般写,就可以获得错误。
2 自定义函数(带有错误返回值)
可以自定义函数或方法,将错误信息返回给调用方。
在addHeight函数中,当最小高度和最高度的值有一项小于我们指定的条件值,就返回具体错误,若是满足条件,返回错误为nil。
核心代码。
func addHeight(heightMin, heightMax int) (int, error) {
if heightMin < 150 || heightMax < 180 {
return 150,errors.New("heightMin不能小于150,heightMax不能小于180")
} else {
return heightMin + heightMax, nil
}
}
func addHeightShow() {
hSum, error := addHeight(140,181)
if error == nil {
fmt.Println(hSum)
} else {
fmt.Println(error)
}
}
func main() {
addHeightShow()
}
调用addHeight函数,获得错误返回值。当错误返回值为空时,打印两值之和。否则打印具体错误信息。
3 自定义error
当我想错误拥有很多信息,比如可以满足提示错误码和错误信息以及其他需要,而上面的函数返回错误信息就力有不逮了。这里自定义error向我们招手了。
自定义一个结构体,加入两个字段,错误状态和错误信息。定义一个方法,返回错误信息errorMsg,这里Error()不能省略。最后在addHeight1中返回调用。
type universalError struct {
// 错误状态
errorStatus int
// 错误信息
errorMsg string
}
func (ue *universalError) Error() string {
return ue.errorMsg
}
func addHeight1(heightMin, heightMax int) (int, *universalError) {
if heightMin < 150 || heightMax < 180 {
return 150,&universalError{
errorStatus: 400,
errorMsg: "heightMin不能小于150,heightMax不能小于180",
}
} else {
return heightMin + heightMax, nil
}
}
func main() {
fmt.Println(addHeight1(149,181))
}
3 小结
熟悉使用自带的错误信息,以及错误是否为空的判断,自定义函数带有返回错误信息,但是返回值满足我们的需求的时候,可以用自定义error。