0%

defer防止程序崩溃

项目中得 defer,中得 panic 应该捕捉吗? 还是应该打印错误,然后停止程序呢?

1
2
3
4
5
6
7
func DeferError()  {
defer func() {
if err := recover();err != nil {
log.Printf("goroutine panic,error is %v\n",err)
}
}()
}

gin 框架中协程中使用如下方式:

1
2
3
4
5
6
7
8
9
10

defer func() { debugPrintError(err) }()

func debugPrintError(err error) {
if err != nil {
if IsDebugging() {
fmt.Fprintf(DefaultErrorWriter, "[GIN-debug] [ERROR] %v\n", err)
}
}
}