Golang 错误处理
基本说明
1)Go语言煮酒简洁优雅,所以,Go语言不支持传统的 try catch finally 这种处理。
2)Go中引入的处理方式为:defer,panic,recover。
3)这几个异常的使用场景可以这么简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。
package main import ( "fmt" ) //这种情况下抛出异常后程序依然继续执行 func test() { //使用defer+recover 来捕获和处理异常 defer func() { err := recover() //recover()内置函数,可以捕获到异常 if err != nil { // 说明捕获到错误 fmt.Println("err = ", err) //这里就可以将错误信息发送给管理员或记录在系统日志等操作 fmt.Println("发送邮件给admin@sohu.com") } }() num1 := 10 num2 := 0 res := num1 / num2 fmt.Println("res=", res) } func main() { //测试 test() fmt.Println("main() 下面的代码...") }
自定义错误
Go程序中,也支持自定义错误,使用 errors.Now 和 panic 内置函数。
1)errors.New("错误说明"),会返回一个error类型的值,表示一个错误
2)panic内置函数,接收一个interface{}类型的值作为参数,可以接收error类型的变量,输出错误信息,并退出程序。
package main import ( "errors" "fmt" ) //这种操作抛出异常后不会继续执行后续代码 //函数去读取配置文件的信息 //如果文件名传入不正确,我们就返回一个自定义的错误 func readConf(name string) (err error) { if name == "config.ini" { //读取... return nil } else { //返回一个自定义错误 return errors.New("读取文件错误...") } } func test02() { err := readConf("config1.ini") if err != nil { //如果读取文件发送错误,就输出这个错误,并终止程序 panic(err) } fmt.Println("test02()继续执行....") } func main() { //测试 test02() fmt.Println("main() 下面的代码...") }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!