在Go中我通过我用panic和recover来抛出错误和捕获错误,并且在全局统一处理。但是在子协程中出现错误会导致整个程序GG,我们需要为某个子协程单独recover处理,例如
// 开启协程
go func() {
// 处理错误
defer func() {
if err := recover(); err != nil {
ToolsWarn.WarnNotice(err)
wg.Done()
}
}()
// 保存数据
m.saveToDbData(productItem, &mutex)
// 协程计数-1
wg.Done()
}()