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

 更新时间:2021年09月23日 15:12:08   作者:cui_yonghua  
如果协程出现了panic,就会造成程序的崩溃,这时可以在goroutine中使用recover来捕获panic,进行处理,本文就详细的介绍一下,感兴趣的可以了解一下

案例:如果我们起了一个协程,但这个协程出现了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导致程序崩溃的问题的文章就介绍到这了,更多相关Go panic程序崩溃内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Go实现一个百行聊天服务器的示例代码

    使用Go实现一个百行聊天服务器的示例代码

    前段时间, redis作者整了个c语言版本的聊天服务器,代码量拢共不过百行,于是, 心血来潮下, 我也整了个Go语言版本, 简单来说就是实现了一个聊天室的功能,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • go module化 import 调用本地模块 tidy的方法

    go module化 import 调用本地模块 tidy的方法

    这篇文章主要介绍了go module化 import 调用本地模块 tidy的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • 拦截信号Golang应用优雅关闭的操作方法

    拦截信号Golang应用优雅关闭的操作方法

    这篇文章主要介绍了拦截信号优雅关闭Golang应用,本文介绍了信号的概念及常用信号,并给出了应用广泛的几个示例,例如优雅地关闭应用服务、在命令行应用中接收终止命令,需要的朋友可以参考下
    2023-02-02
  • go中如何获取本机ip地址

    go中如何获取本机ip地址

    这篇文章主要介绍了go中如何获取本机ip地址问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • go中switch语句的用法详解

    go中switch语句的用法详解

    在Go中的switch语句类似于C、C++、Java、JavaScript和PHP中的switch语句,不同之处在于它只执行匹配的case,因此不需要使用break语句,下面我们就一起来学习一下switch语句的具体使用吧
    2023-09-09
  • golang使用bcrypt包对密码进行加密的方法实现

    golang使用bcrypt包对密码进行加密的方法实现

    本文主要介绍了golang使用bcrypt包对密码进行加密的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • golang解析网页利器goquery的使用方法

    golang解析网页利器goquery的使用方法

    这篇文章主要给大家介绍了关于golang解析网页利器goquery的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起学习学习吧。
    2017-09-09
  • Go 语言中的 http.FileSystem详细解析

    Go 语言中的 http.FileSystem详细解析

    在本文中,我们深入探讨了 Go 语言中的 http.FileSystem 接口,并介绍了它的基本原理、使用方法以及实际应用场景,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Golang利用位运算实现为程序加速

    Golang利用位运算实现为程序加速

    这篇文章主要为大家详细介绍了如何在Golang中利用位运算实现为程序加速功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08
  • go语言中的udp协议及TCP通讯实现示例

    go语言中的udp协议及TCP通讯实现示例

    这篇文章主要为大家介绍了go语言中的udp协议及TCP通讯的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04

最新评论