Go语言 错误处理
2018-08-18 本文已影响0人
小杰的快乐时光
error类型是一个接口类型
type error interface {
Error() string
}
实例分析
//定义一个Error结构
type DivideError struct {
dividee int //除数
divider int //被除数
}
//实现 error 接口
func (de *DivideError)Error()string {
//规定错误的格式
strFormat := `
Cannot proceed, the divider is zero.
dividee: %d
divider: 0
`
return fmt.Sprintf(strFormat,de.dividee)
}
//定义 int 类型除法运算的函数
func Divide(varDividee int, varDivider int)(result int, errorMsg string) {
if varDivider == 0 {
dData := DivideError{
dividee: varDividee,
divider: varDivider,
}
errorMsg = dData.Error()
return
}else {
return varDividee/varDivider,""
}
}
func main() {
//正常情况
if result,errorMsg :=Divide(100,10);errorMsg =="" {
fmt.Println("100/10 = ",result)
}
//当被除数为零的时候会返回错误信息
if _,errorMsg := Divide(100,0);errorMsg!= "" {
fmt.Println("errorMsg is: ",errorMsg)
}
}