企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一、实例 ~~~ package main import "fmt" type DirErr struct { desc string } func (err *DirErr) err() string { return fmt.Sprintf("错误类型:%s", err.desc) } func fun01(a, b int) (max int, err string) { if a < 0 { DirErr := DirErr{desc: "a不能小于0"} err = DirErr.err() return } if b < 0 { DirErr := DirErr{desc: "b不能小于0"} err = DirErr.err() return } if a > b { max = a } else { max = b } return max, "" } func main() { // 1、数据正确的情况下 var a int = 10 var b int = 20 v, err := fun01(a, b) if err != "" { fmt.Println(err) } else { fmt.Println("最大值为:", v) } // 2、数据错误的情况下 var c int = 10 var d int = -2 v2, err2 := fun01(c, d) if err2 != "" { fmt.Println(err2) } else { fmt.Println("最大值为:", v2) } } ~~~ 执行结果: 最大值为: 20 错误类型:b不能小于0 ## 二、实例 1、 defer+recover机制处理错误 ![](https://img.kancloud.cn/55/c5/55c52dbba732a6107200cd33148dde46_689x457.png) 2、 自定义错误 自定义错误:需要调用errors包下的New函数:函数返回error类型 ![](https://img.kancloud.cn/45/12/4512010e716d73e4b0b9724752c8fa3d_689x493.png) 有一种情况:程序出现错误以后,后续代码就没有必要执行,想让程序中断,退出程序: 借助:builtin包下内置函数:panic ![](https://img.kancloud.cn/7a/ee/7aee0f4dea9fe08060f6816ea653a4da_689x162.png) ![](https://img.kancloud.cn/4b/d6/4bd6d043524d256f8313fae52fbede5a_689x448.png)