您将在这篇文章中看到的所有代码,您可以检查here
在上一篇文章中,我们构建了一个DealWith()方法来处理我们的API错误,但目前我们什么也没做。在这篇文章中,我们将构建如何提供用户友好的方式来向用户展示我们的问题。如果问题不是注册错误(我们构建的错误,并且是应用程序的一部分),我们将集中我们的错误堆栈,以与开发人员的团队共享问题(文件,方法名称和行)为团队解决了可能的问题。
表示我们的注册错误,我们将创建一个错误映射(错误Handlermap),以将错误作为键和HTTP代码存储为值。
//cmd/http/helper/error.go
//...
var (
errorHandlerMap = make(map[error]int)
)
//...
func DealWith(err error) HttpError {
if errCode, ok := errorHandlerMap[err]; ok {
return HttpError{Status: errCode, Description: err.Error()}
} else {
return HttpError{
Status: http.StatusInternalServerError,
Description: "Internal error, please report to admin",
}
}
}
现在,您可以查看我们的DealWith方法检查我们的错误键是否在我们的地图中注册了错误键。如果我们要处理的错误已注册,我们将代表带有特定消息的特定HTTP代码。其他任何内容都将被指定为未注册的错误或我们目前尚不知道如何处理的错误。
当我们创建此应用程序时,此地图将增加。并非每个应用程序错误都需要在此地图中,但是如果您的错误应使用用户友好的消息传递,则需要使用特定的HTTP代码在此地图中注册此错误。
如果您看到我们的代码可能认为我们的地图没有任何错误注册,那么您是正确的。我们将在下一篇文章中开始注册一些验证错误。