goroutine中使用recover,解决协程中出现panic,导致程序崩溃的问题。recover panic 协程的错误处理
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 协程的错误处理相关推荐
- Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题
Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题 参考文章: (1)Vue---vue-cli 中的proxyTable解决开发环境中的跨域问题 (2)https://ww ...
- OpenCV中waitKey()函数失效问题汇总(按键失效、按键不灵、按键导致程序崩溃)
提示:阅读文章,大约需要3分钟 问题描述 在使用OpenCV编程的时候,我们经常会使用按键等待函数:waitKey(),大家可能会用它来作为 延迟.等待用户输入按键的功能使用,以下列出了在使用过程中遇 ...
- c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题
代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...
- 解决三星note3调用系统拍照后程序崩溃或无法获取图片
三星note3上调用拍照时,发现调用相机拍完照片返回时,导致系统崩溃或者无法获取到图片,仔细研究发现,拍完照后触发它的activity重新走了onCreate()方法. 解决方法: 1.刚开始调用了o ...
- bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题
作者:下一秒升华 出自:CSDN 原文:blog.csdn.net/u013815546/article/details/53032445 相信大家在web开发过程中一定遇到过一种情况,Class班级 ...
- Android 引用模块中的类,解决Android项目中找不到Module中的封装类或引用的第三方类库...
在日常开发中,现在越来越流行模块化开发,这就需要将项目分成不同的Module进行同时开发,最后在app层进行整合调用,但是不少开发人员都因为在build中添加关联代码,而找不到Module中封装的方法 ...
- python中typeerror怎么解决_Python 3中套接字编程中遇到TypeError: 'str' does not support the buffer interface的解决办法...
目前正在学习python,使用的工具为python3.2.3.发现3x版本和2x版本有些差异,在套接字编程时,困扰了我很久,先将python核心编程书中的例子 代码如下: 服务器端: #Echo se ...
- linux系统中病毒怎么解决,Linux 服务器中木马病毒及清除过程
一.背景 晚上看到有台服务器流量跑的很高,明显和平常不一样,流量达到了800Mbps,第一感觉应该是中木马了,被人当做肉鸡了,在大量发包. 我们的服务器为了最好性能,防火墙(iptables)什么的都 ...
- java中空指针异常如何解决_main函数中出现空指针异常,如何解决?
编译通过,但运行时出现空指针异常,可是找不到哪里出现了空指针. 代码如下: import java.awt.*; import javax.swing.*; public class MyDrawPa ...
最新文章
- 跨网段实现内网互通_【供暖站组网】冠航SD-LAN助力河北石家庄市30个供暖站异地组网实现内网互联互通...
- 万网mysql中文乱码_Linux下MySQL出现乱码的解决方法-阿里云开发者社区
- 数据结构之图的应用:最小生成树MST(prime算法和Kruskal算法)
- 鼠标方式自动弹出内容html,html 在一个超链接上面,鼠标移动上去时,也显示一串文字,如何实现...
- tomcat 使用log4j 管理日志
- ARM版Win11系统(intel版Win10/11系统)
- 数组题 倒置 加到字符串
- java程序员表情包_听说,这些表情包只有程序员才懂
- Lua的安装配置出现的问题以及解决方案(Win10环境下)
- Electron + Vue 实现输入法自动刷字数
- 相机标定—标定图片拍摄规范(附棋盘图)
- python高级算法与数据结构:“你如何压缩一部英文著作”,一道来自大厂的真实面试题
- 一个服务器可以放几个小程序,一个服务器可以放几个小程序
- 单片机通过MQTT协议连接OneNet实现发布/订阅理论篇
- 视频教程-ShardingSphere:SpringBoot2+MybatisPlus+Swagger读写分离-Java
- 七阶拉丁方阵_拉丁方阵
- Windows窗口、控件和对话框
- 欧尼酱讲JVM(19)——执行引擎
- 3阶以下贝塞尔曲线轨迹库和任意轨迹库
- postman编程了解