go语言panic异常及recover拦截恢复初级
Go语言为我们提供了专用于“拦截”运行时panic的内建函数——recover。它可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权。下面我们来看一下具体该怎么用
package main import "fmt"func main() { var a int =10 //故意让10除以0 var b int //recover应当放在可能出现的错误之前 //通俗理解为宜未雨绸缪,不可亡羊补牢 defer func() { //放在匿名函数里,err捕获到错误信息,并且输出 err:=recover() if err!=nil { fmt.Println(err) } }() c:=a/b fmt.Println(c)}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
以上可能大家还不能完全理解,下面再来一个稍微复杂一点点的例子
package mainimport "fmt"func test(i int) { var arr [10]int //defer会延迟函数的执行,虽然立即调用了匿名函数,但是该匿名函数 //不会执行,等整个main函数结束之前在去调用执行匿名函数 defer func(){ err:=recover() //nil为空的意思,如果不为空,贼表明捕获到了错误信息 if err!=nil { fmt.Println(err) } }() arr[i]=123 fmt.Println(arr)}//主函数开始调用,故意越界,但是程序并没报错,而是打印出了错误信息func main() { test(10)}****以上则为recover最基础的用法****原文地址https://blog.csdn.net/weixin_42940826/article/details/81587867继续阅读与本文标签相同的文章
上一篇 :
mysql5.7免安装版配置
下一篇 :
JsonNode、JsonObject常用方法
-
MongoDB 安装与配置
2026-05-26栏目: 教程
-
springmvc拦截器配置
2026-05-26栏目: 教程
-
Linux下安装mysql
2026-05-26栏目: 教程
-
Spring容器初始化数据(数据库)BeanPostProcessor的应用
2026-05-26栏目: 教程
-
memcached缓存技术
2026-05-26栏目: 教程
