1、Go中引入的处理方式为:defer,panic,recover
Go中可以抛出一个panic异常,然后在defer中通过recover捕获这个异常。然后正常处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | func test() { defer func () { if err := recover(); err != nil { // recover()内置函数,可以捕获异常 fmt.Println( "err=" , err) } }() num1 := 10 num2 := 0 res := num1 / num2 fmt.Println( "res=" , res) } func main() { test() fmt.Println( "main下面的代码" ) } |
输出:
1 2 | err= runtime error: integer divide by zero main下面的代码 |
2、自定义错误
使用errors.New和panic内置函数
errors.New("错误说明"),会返回一个error值,使用error类型的值,表示一个错误
panic内置函数,接收一个interface{}类型的值(也就是任意值)作为函数,可以接收error类型的变量,输出错误信息,并退出程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | func test(code string) (err error) { if code != "200" { err = errors.New( "接口调用失败" ) } return } func main() { err := test( "100" ) if err != nil { // 如果接口调用失败,就会输出这个错误,并终止程序 panic(err) } fmt.Println( "main下面的代码" ) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!