http服务中使用闭包避免程序崩溃
func safeHandler(fn http.HandlerFunc) http.HandlerFunc {
??? return func(w http.ResponseWriter, r *http.Request) {
??????? defer func() {
?????????? if e, ok := recover().(error); ok {
???????????????? //错误处理
?????????? }
??????? }
??????? fn(w, r)
??? }
}
?
说明:
safeHandler方法接收业务处理函数作为参数,同时调用这个业务处理函数,该业务逻辑处理函数执行完毕后,safeHandler方法中的defer指定的匿名函数就会执行,检测是否有错误