package mainimport ("fmt""time"
)//goroutine中使用recover,解决协程中出现panic,导致程序崩溃的问题。
func sayhello() {for i := 0; i < 10; i++ {time.Sleep(time.Second)fmt.Println("say hello")}
}func test() {//这里可以使用错误处理机制defer + recover来解决defer func() {//使用匿名函数捕获test抛出的panic//是一个内建的函数,可以让进入令人恐慌的流程中的 goroutine 恢复过来。// recover仅在延迟函数中有效。//在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果。//如果当前的 goroutine 陷入恐慌,调用 recover 可以捕获到 panic 的输入值,//并且恢复正常的执行。recover只有在defer调⽤的函数中有效。if err := recover(); err != nil {fmt.Println("test 发生错误", err)}}()//定义了一个mapvar myMap map[int]stringmyMap[0] = "golang" //error//panic: assignment to entry in nil map
}
func main() {go sayhello()go test()for i := 0; i < 10; i++ {fmt.Println("ok")time.Sleep(time.Second)}
}

recover函数的作用:


使用匿名函数捕获test抛出的panic
是一个内建的函数,可以让进入令人恐慌的流程中的 goroutine 恢复过来。
recover仅在延迟函数中有效。
在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果。
如果当前的 goroutine 陷入恐慌,调用 recover 可以捕获到 panic 的输入值,
并且恢复正常的执行。recover只有在defer调⽤的函数中有效。

goroutine中使用recover,解决协程中出现panic,导致程序崩溃的问题。recover panic 协程的错误处理相关推荐

  1. Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题

    Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题 参考文章: (1)Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题 (2)https://ww ...

  2. OpenCV中waitKey()函数失效问题汇总(按键失效、按键不灵、按键导致程序崩溃)

    提示:阅读文章,大约需要3分钟 问题描述 在使用OpenCV编程的时候,我们经常会使用按键等待函数:waitKey(),大家可能会用它来作为 延迟.等待用户输入按键的功能使用,以下列出了在使用过程中遇 ...

  3. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

  4. 解决三星note3调用系统拍照后程序崩溃或无法获取图片

    三星note3上调用拍照时,发现调用相机拍完照片返回时,导致系统崩溃或者无法获取到图片,仔细研究发现,拍完照后触发它的activity重新走了onCreate()方法. 解决方法: 1.刚开始调用了o ...

  5. bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题

    作者:下一秒升华 出自:CSDN 原文:blog.csdn.net/u013815546/article/details/53032445 相信大家在web开发过程中一定遇到过一种情况,Class班级 ...

  6. Android 引用模块中的类,解决Android项目中找不到Module中的封装类或引用的第三方类库...

    在日常开发中,现在越来越流行模块化开发,这就需要将项目分成不同的Module进行同时开发,最后在app层进行整合调用,但是不少开发人员都因为在build中添加关联代码,而找不到Module中封装的方法 ...

  7. python中typeerror怎么解决_Python 3中套接字编程中遇到TypeError: 'str' does not support the buffer interface的解决办法...

    目前正在学习python,使用的工具为python3.2.3.发现3x版本和2x版本有些差异,在套接字编程时,困扰了我很久,先将python核心编程书中的例子 代码如下: 服务器端: #Echo se ...

  8. linux系统中病毒怎么解决,Linux 服务器中木马病毒及清除过程

    一.背景 晚上看到有台服务器流量跑的很高,明显和平常不一样,流量达到了800Mbps,第一感觉应该是中木马了,被人当做肉鸡了,在大量发包. 我们的服务器为了最好性能,防火墙(iptables)什么的都 ...

  9. java中空指针异常如何解决_main函数中出现空指针异常,如何解决?

    编译通过,但运行时出现空指针异常,可是找不到哪里出现了空指针. 代码如下: import java.awt.*; import javax.swing.*; public class MyDrawPa ...

最新文章

  1. 跨网段实现内网互通_【供暖站组网】冠航SD-LAN助力河北石家庄市30个供暖站异地组网实现内网互联互通...
  2. 万网mysql中文乱码_Linux下MySQL出现乱码的解决方法-阿里云开发者社区
  3. 数据结构之图的应用:最小生成树MST(prime算法和Kruskal算法)
  4. 鼠标方式自动弹出内容html,html 在一个超链接上面,鼠标移动上去时,也显示一串文字,如何实现...
  5. tomcat 使用log4j 管理日志
  6. ARM版Win11系统(intel版Win10/11系统)
  7. 数组题 倒置 加到字符串
  8. java程序员表情包_听说,这些表情包只有程序员才懂
  9. Lua的安装配置出现的问题以及解决方案(Win10环境下)
  10. Electron + Vue 实现输入法自动刷字数
  11. 相机标定—标定图片拍摄规范(附棋盘图)
  12. python高级算法与数据结构:“你如何压缩一部英文著作”,一道来自大厂的真实面试题
  13. 一个服务器可以放几个小程序,一个服务器可以放几个小程序
  14. 单片机通过MQTT协议连接OneNet实现发布/订阅理论篇
  15. 视频教程-ShardingSphere:SpringBoot2+MybatisPlus+Swagger读写分离-Java
  16. 七阶拉丁方阵_拉丁方阵
  17. Windows窗口、控件和对话框
  18. 欧尼酱讲JVM(19)——执行引擎
  19. 3阶以下贝塞尔曲线轨迹库和任意轨迹库
  20. postman编程了解

热门文章

  1. 融云助制造业移动信息化建设 加速两化融合创新
  2. PCB设计——购买元器件出现的问题
  3. win10安装Vmware虚拟机并部署安装Linux系统
  4. 秦始皇留下的9个谜团
  5. webpack5-打包css等样式资源,css等样式文件提取,css等样式文件压缩
  6. Python绘制饼状图
  7. R语言零基础自学:1、开始R和R的语法
  8. FatMouse' Trade
  9. 【Address already in use Port 5000 is in use by another program 端口被占用问题(已解决)】
  10. Lex和Yacc应用方法(一).初识Lex