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)
}
相关推荐
liyinchi19881 天前
微信小程序支付遇到“由于小程序违规,支付功能暂时无法使用” 解决办法
java·微信小程序·go
天天喝旺仔1 天前
Go 泛型实战:从类型参数、约束到可复用泛型容器与函数
数据结构·算法·容器·go
gospace2 天前
【无标题】
go·gb28181·gowvp
我不会起名字3222 天前
一天一道算法题(35):电话号码的字母组合
java·数据结构·后端·python·leetcode·go·回溯
江湖十年2 天前
Go GOPROXY 兜底链的坑:从一次诡异的 CI lint 失败说起
后端·面试·go
秋风点枝3 天前
gogogo!go语言感悟大观--打卡day01
go·devops
探索云原生3 天前
KubeClipper 1.7.0 发布:Operation 优化与 Kubernetes 1.37 支持
linux·docker·云原生·kubernetes·go
右耳朵猫AI3 天前
Go周刊2026W37 | Ebitengine 纯 Go 化、simd 重写 TurboPFor、json/v2 落地
后端·微服务·go
福兮说3 天前
Gin 项目里的错误处理:让 Controller 不必知道错误是怎么来的
后端·go·gin·架构设计
福兮说3 天前
我们那个 IP 限流中间件,跑久了会把内存吃光
go