为了在 go 框架中自定义错误消息,可以使用 fmt.errorf 函数返回一个错误值,包含自定义的格式化字符串。例如: err := fmt.errorf("用户 %s 不存在", "username")。还可以使用 %+v 格式化选项输出更多详细信息,包括堆栈跟踪。在 rest api 中,如果电子邮件地址无效,可以使用 validateemail 函数自定义错误消息,例如:err := validateemail(email),如果电子邮件地址无效,它将返回一个 apierror 类型的错误,包含自定义的错误消息。

Go 框架中自定义错误消息
在 Go 框架中处理错误时,返回有意义的错误消息非常重要。它有助于开发人员快速查明问题所在,并采取适当的措施来解决错误。Go 框架允许您自定义错误消息,以便提供与特定错误相对应的详细信息。
要自定义错误消息,可以使用 fmt.Errorf 函数。它返回一个错误值,其中包含您提供的格式化字符串。例如:
立即学习“go语言免费学习笔记(深入)”;
import "fmt"
func main() {
err := fmt.Errorf("用户 %s 不存在", "username")
fmt.Println(err)
}输出:
用户 username 不存在
您还可以使用 %+v 格式化选项来输出更多详细信息,包括堆栈跟踪:
AlegroCart新功能:维类:包括在这两种线性长宽高或面积或体积长波产品尺寸允许与期权产品:让产品/期权组合独特的数量,尺寸,图像和型号。选择店铺标识管理 图片放大镜:显示一个图片放大上空盘旋时,产品形象弹出框。自定义错误报告:设置在管理员启用。 开发者只可以显示详细的信息。错误信息都写入到错误日志文件每天可以通过电子邮件发送给管理员。仓库皮卡航运模块:允许客户指定产品在商店的位置回升。增加了
fmt.Println(err.Error())
输出:
用户 username 不存在
goroutine 1 [running]:
main.main()
/home/user/go/src/custom_error_message/main.go:10 +0x50
exit status 1实战案例:
下面是一个在创建 REST API 时自定义错误消息的示例。该 API 期望将电子邮件地址作为输入,如果电子邮件地址无效,就会返回错误:
import (
"errors"
"fmt"
)
type APIError struct {
Message string
}
func (e *APIError) Error() string { return e.Message }
func ValidateEmail(email string) error {
if !strings.Contains(email, "@") {
return &APIError{
Message: fmt.Errorf("无效的电子邮件地址:%s", email).Error(),
}
}
return nil
}在处理请求时,可以如下使用 ValidateEmail 函数并自定义错误消息:
if err := ValidateEmail(email); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
}此代码将在电子邮件地址无效时返回以下 JSON 响应:
{
"error": "无效的电子邮件地址:username"
}









