Go语言 如何处理来自http.HandleFunc的错误?

zvms9eto  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(163)

我做了一些 Package

func (p Page) MainInitHandlers() {
  http.HandleFunc("/", p.mainHandler)
  http.HandleFunc("/save", p.saveHandler)
}

如果在我的hadlers(mainHandler,saveHandler)内部发生了错误,我能以某种方式得到它吗?

err := MainInitHandlers

这可能吗?

l7wslrjt

l7wslrjt1#

这些函数不能返回错误,并且它们在您试图使用返回值时被调用,只注册为处理程序。因此,您不能从它们中获取错误信息。您在处理HTTP请求时可能遇到的错误类型应该在处理程序函数中处理,通常是通过向客户端返回错误代码并发出某种日志消息或警报以供开发人员响应。

sz81bmfz

sz81bmfz2#

您可以随时编写 Package 器:

type withError func(ctx context.Context, r *http.Request, w http.ResponseWriter) error

func wrap(f withError) http.Handler {
  return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    processErr(f(r.Context(), r, w))
  })
}

http.Handle("", wrap(...))

相关问题