Go语言的错误处理机制
Go 错误处理
基本语法
error的定义
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。
error类型是一个接口类型,这是它的定义:
type error interface { Error() string }
我们可以在编码中通过实现 error 接口类型来生成错误信息。
函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息:
返回错误信息
func Sqrt(f float64) (float64, error) { if f < 0 { return 0, errors.New("math: square root of negative number") } // 实现 }
例子
以下代码出错
package main import ( "fmt" ) func main() { num1:=10 num2:=0 res:=num1/num2 fmt.Printf("res:%v\n", res) }
package main import ( "fmt" ) func main() { test() } func test(){ //使用defer+recover处理异常 defer func (){ err:=recover() //recover 是一个内置函数 if err !=nil{ fmt.Printf("err=", err) } }() num1:=10 num2:=0 res:=num1/num2 fmt.Printf("res:%v\n", res) }
Go语言中处理异常
defer
defer是golang提供的关键字,在函数或者方法执行完成,返回之前调用。
每次defer都会将defer函数压入栈中,调用函数或者方法结束时,从栈中取出执行,所以多个defer的执行顺序是先入后出。
panic (抛出异常)
recover(捕获异常)
recover 是一个内置函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具