老师,为什么我明明是抛出userErrorActual的错误,为什么在处理HTTP响应时能够被userError断言成功?
来源:8-5 服务器统一出错处理2

ericdemon
2021-03-15
问题:
- 这里有一个地方很不能理解,我明明是抛出userErrorActual的错误,为什么在处理HTTP响应时能够被userError断言成功?
根据课程视频中的代码逻辑:
- 我定义了2个类型,一个是接口userError,另外一个是字符串userErrorActual
type userError interface {
error
Message() string
}
type userErrorActual string
func (e userErrorActual) Error() string {
return e.Message()
}
func (e userErrorActual) Message() string {
return string(e)
}
- 然后我在处理请求路径时做了判断,判断如果不存在"/list/"子串的话就直接抛出userErrorActual
if strings.Index(request.URL.Path, "/list/") != 0 {
return userErrorActual("path must start with /list/")
}
- 并在返回HTTP响应时做对应的错误信息处理
...
if err != nil {
...
if userErr, userStatus := err.(userError); userStatus {
fmt.Println(userErr, userStatus)
http.Error(write, userErr.Message(), http.StatusBadRequest)
return
}
switch {
...
}
http.Error(write, http.StatusText(code), code)
}
...
写回答
1回答
-
ericdemon
提问者
2021-03-15
是因为userErrorActual类型正好都有与userError中相同的内容,所以也userErrorActual实现了userError接口吗。。
022021-03-16
相似问题