Go语言使用defer+recover解决panic导致程序崩溃的问题
作者:cui_yonghua 时间:2024-01-30 06:29:18
案例:如果我们起了一个协程,但这个协程出现了panic,但我们没有捕获这个协程,就会造成程序的崩溃,这时可以在goroutine中使用recover来捕获panic,进行处理,这样主线程不会受到影响。
代码如下:
package main
import (
"fmt"
"time"
)
func sayHello() {
for i := 0; i < 10; i++ {
time.Sleep(time.Second)
fmt.Println("hello world")
}
}
func test() {
//使用 defer + recover
defer func() {
//捕获test抛出的panic
if err := recover();err!=nil{
fmt.Println("test发生错误",err)
}
}()
//定义一个map
var myMap map[int]string
myMap[0] = "golang" //error
}
func main() {
go sayHello()
go test()
for i := 0; i < 10; i++ {
fmt.Println("main() ok=",i)
time.Sleep(time.Second)
}
}
执行结果如下图:
来源:https://cuiyonghua.blog.csdn.net/article/details/94739645
标签:Go,defer,recover,panic,程序崩溃
0
投稿
猜你喜欢
JS实现两周内自动登录功能
2023-08-04 21:20:57
python中的插值 scipy-interp的实现代码
2022-02-23 02:50:09
Python实现对中文文本分段分句
2022-09-16 18:16:50
python中文编码与json中文输出问题详解
2021-03-15 17:57:18
python利用Appium实现自动控制移动设备并提取数据功能
2021-07-05 23:15:21
Python中协程用法代码详解
2021-01-26 06:33:24
解读MaxPooling1D和GlobalMaxPooling1D的区别
2023-07-21 10:54:43
vue项目中常见问题及解决方案(推荐)
2024-04-26 17:37:47
简单介绍Python中的readline()方法的使用
2023-11-02 13:34:30
ASP正则表达式技巧
2011-04-10 11:00:00
MYSQL每隔10分钟进行分组统计的实现方法
2024-01-22 13:56:42
关于python环境变量如何配置
2023-06-02 14:23:09
QQ连连看 for iPhone 设计实录分享
2010-09-25 12:54:00
Python Queue模块详细介绍及实例
2022-03-08 11:03:58
Windows下Python使用Pandas模块操作Excel文件的教程
2021-01-05 23:07:40
SQL Server的触发器详解
2024-01-21 02:45:41
详解Pytorch如何利用yaml定义卷积网络
2023-02-16 10:46:01
python系统指定文件的查找只输出目录下所有文件及文件夹
2021-03-23 08:00:04
MySQL查看和修改字符编码的实现方法
2024-01-26 00:20:22
python实现通过代理服务器访问远程url的方法
2023-03-14 00:47:38