Documentation
¶
Overview ¶
Package errorhandler 提供自定义错误处理功能
net/http 包中对于错误的处理是通过 http.Error() 进行的, 我们无法直接修改该方法,实现自定义的错误处理功能。 只能对 http.ResponseWriter.WriteHeader() 进行自定义, 在指定的状态下,抛出异常,再通过 recover 实现错误处理。
需要注意的是,如果采用了当前包的方案,那么默认情况下, 所有大于 400 的 WriteHeader 操作,都会被 panic, 如果你对某些操作不想按正常流程处理,可以使用 errorhandler.WriteHeader 代替默认的 ResponseWriter.WriteHeader 操作。
Index ¶
- func Exit(status int)
- func WriteHeader(w http.ResponseWriter, status int)
- type ErrorHandler
- func (e *ErrorHandler) Add(f HandleFunc, status ...int) error
- func (e *ErrorHandler) New(next http.Handler) http.Handler
- func (e *ErrorHandler) NewFunc(next func(http.ResponseWriter, *http.Request)) http.Handler
- func (e *ErrorHandler) Recovery(errlog *log.Logger) recovery.RecoverFunc
- func (e *ErrorHandler) Render(w http.ResponseWriter, status int)
- func (e *ErrorHandler) Set(f HandleFunc, status ...int)
- type HandleFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Exit ¶
func Exit(status int)
Exit 退出当前的协程
status 表示输出的状态码,如果为 0,则不会作任何状态码输出。
Exit 最终是以 panic 的形式退出,所以如果你的代码里截获了 panic, 那么 Exit 并不能达到退出当前请求的操作。
func WriteHeader ¶ added in v1.3.0
func WriteHeader(w http.ResponseWriter, status int)
WriteHeader 写入 HTTP 状态值
通过 errorhandler 的封装之后,默认会将大于等于 400 状态值的响应重定向到指定的处理函数,如果不需要特殊处理, 可以调用此函数,按照正常流程处理。
Types ¶
type ErrorHandler ¶
type ErrorHandler struct {
// contains filtered or unexported fields
}
ErrorHandler 错误处理函数的管理
func (*ErrorHandler) Add ¶
func (e *ErrorHandler) Add(f HandleFunc, status ...int) error
Add 添加针对特写状态码的错误处理函数
func (*ErrorHandler) New ¶
func (e *ErrorHandler) New(next http.Handler) http.Handler
New 构建一个可以捕获错误状态码的 Handler
NOTE: 要求在最外层
func (*ErrorHandler) NewFunc ¶
func (e *ErrorHandler) NewFunc(next func(http.ResponseWriter, *http.Request)) http.Handler
NewFunc 构建一个可以捕获错误状态码的 Handler
NOTE: 要求在最外层
func (*ErrorHandler) Recovery ¶
func (e *ErrorHandler) Recovery(errlog *log.Logger) recovery.RecoverFunc
Recovery 生成一个 recovery.RecoverFunc 函数用于捕获由 panic 触发的事件
errlog 表示输出调用堆栈信息到日志。可以为空,表示不输出信息。
func (*ErrorHandler) Render ¶
func (e *ErrorHandler) Render(w http.ResponseWriter, status int)
Render 向客户端输出指定状态码的错误内容
func (*ErrorHandler) Set ¶
func (e *ErrorHandler) Set(f HandleFunc, status ...int)
Set 设置指定状态码对应的处理函数
有则修改,没有则添加
type HandleFunc ¶
type HandleFunc func(http.ResponseWriter, int)
HandleFunc 错误处理函数,对某一固定的状态码可以做专门的处理