defer+recover机制处理错误

问题:多个协程工作,其中一个协程出现panic,导致程序崩溃

解决办法:利用defer+recover捕获panic进行处理,即使协程出现错误,主线程仍然不受影响可以继续执行

Go 复制代码
package main

import (
	"fmt"
	"time"
)

func main() {

	go printNum()
	go devide()

	time.Sleep(time.Second * 5)
}

// 输出数字
func printNum() {
	for i := 1; i <= 10; i++ {
		fmt.Println(i)
	}
}

// 除法操作
func devide() {
	defer func() {
		err := recover()
		if err != nil {
			fmt.Println("devide()出现错误:", err)
		}
	}()
	num1 := 10
	num2 := 0
	result := num1 / num2
	fmt.Println(result)
}
相关推荐
Grassto14 小时前
从 GOPATH 到 Go Module:Go 依赖管理机制的演进
开发语言·后端·golang·go
钟智强1 天前
红队实战复盘:如何运用【火尖枪】高效突破复杂登录防线
服务器·安全·web安全·http·go·php·bruteforce
Grassto1 天前
Go Module 基础概念全解析:module、version、sum 是什么
golang·go·go module
码luffyliu1 天前
从 2 小时价格轮询任务通知丢失,拆解 Go Context 生命周期管控核心
后端·golang·go
踏浪无痕2 天前
一个 Java 老兵转 Go 后,终于理解了“简单”的力量
后端·程序员·go
代码扳手2 天前
一次线上事故后的反思:Go 项目中如何构建可靠的单元测试
后端·go
Penge6662 天前
Go JSON 序列化大整数丢失精度分析
后端·go
ServBay3 天前
掌握这9个GO技巧,代码高效又高能
后端·go
Grassto3 天前
一个 import 语句,引发的 Go 第三方包加载之旅
golang·go·go module