Вопрос: Как реализовать recover-middleware, чтобы сервер не падал на panic?
Python
Senior
Без компании
Вопрос: Как реализовать recover-middleware, чтобы сервер не падал на panic?
Ответы
```go
func recoverMW(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer func() {
if rec := recover(); rec != nil {
log.Println("panic:", rec)
http.Error(w, "internal error", http.StatusInternalServerError)
}
}()
next.ServeHTTP(w, r)
})
}
```
**Как это работает:** panic в handler иначе может положить весь процесс. Middleware перехватывает и возвращает 500.