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)
}
}

执行结果如下图:

Go语言使用defer+recover解决panic导致程序崩溃的问题

来源: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
  • asp之家 网络编程 m.aspxhome.com