在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() }()