1 2 3 4 5 6 7 8 9 10 11 12 13 | //1、创建error对象的方式1 err1 := errors.New("自己创建的错误!") fmt.Println(err1.Error()) fmt.Println(err1) fmt.Printf("err1的类型:%T\n", err1) //*errors.errorString fmt.Println("-----------------") //2、创建error对象的方式2 err2 := fmt.Errorf("错误的类型%d", 10) fmt.Println(err2.Error()) fmt.Println(err2) fmt.Printf("err2的类型:%T\n", err2) //*errors.errorString fmt.Println("-----------------") |
错误对象的使用办法:函数多返回值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package main import ( "errors" "fmt" ) func main() { res , err3 := checkAge(-12) if err3 != nil { fmt.Println(err3.Error()) fmt.Println(err3) } else { fmt.Println(res) } } //设计一个函数:验证年龄。如果是负数,则返回error func checkAge(age int) (string, error) { if age < 0 { err := fmt.Errorf("您的年龄输入是:%d , 该数值为负数,有错误!", age) return "", err } else { return fmt.Sprintf("您的年龄输入是:%d ", age), nil } } |
自定义错误对象:实现接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package main import ( "time" "fmt" ) //1、定义结构体,表示自定义错误的类型 type MyError struct { When time.Time What string } //2、实现Error()方法 func (e MyError) Error() string { return fmt.Sprintf("%v : %v", e.When, e.What) } //3、定义函数,返回error对象。该函数求矩形面积 func getArea(width, length float64) (float64, error) { errorInfo := "" if width < 0 && length < 0 { errorInfo = fmt.Sprintf("长度:%v, 宽度:%v , 均为负数", length, width) } else if length < 0 { errorInfo = fmt.Sprintf("长度:%v, 出现负数 ", length) } else if width < 0 { errorInfo = fmt.Sprintf("宽度:%v , 出现负数", width) } if errorInfo != "" { return 0, MyError{time.Now(), errorInfo} } else { return width * length, nil } } func main() { res , err := getArea(-4, -5) if err != nil { fmt.Printf(err.Error()) } else { fmt.Println("面积为:" , res) } } |
本文链接:
版权声明: 本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!