我做了一些 Package
func (p Page) MainInitHandlers() { http.HandleFunc("/", p.mainHandler) http.HandleFunc("/save", p.saveHandler) }
如果在我的hadlers(mainHandler,saveHandler)内部发生了错误,我能以某种方式得到它吗?
err := MainInitHandlers
这可能吗?
l7wslrjt1#
这些函数不能返回错误,并且它们在您试图使用返回值时被调用,只注册为处理程序。因此,您不能从它们中获取错误信息。您在处理HTTP请求时可能遇到的错误类型应该在处理程序函数中处理,通常是通过向客户端返回错误代码并发出某种日志消息或警报以供开发人员响应。
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(...))
2条答案
按热度按时间l7wslrjt1#
这些函数不能返回错误,并且它们在您试图使用返回值时被调用,只注册为处理程序。因此,您不能从它们中获取错误信息。您在处理HTTP请求时可能遇到的错误类型应该在处理程序函数中处理,通常是通过向客户端返回错误代码并发出某种日志消息或警报以供开发人员响应。
sz81bmfz2#
您可以随时编写 Package 器: