当前位置: 首页 > news >正文

祭祖网站怎么做物流建设网站总结报告

祭祖网站怎么做,物流建设网站总结报告,vivo手机的网站开发,做旅行社网站的之前的文章《Golang 中的 errors 包详解》详细讲解了 errors 包的主要类型和函数,以及它们的使用方法。本文结合之前讲解的知识,来讲解一下根据自己或团队的项目要求如何返回自定义的 error 类型。 为什么需要自定义 error 类型? 在日常开发…

之前的文章《Golang 中的 errors 包详解》详细讲解了 errors 包的主要类型和函数,以及它们的使用方法。本文结合之前讲解的知识,来讲解一下根据自己或团队的项目要求如何返回自定义的 error 类型。

为什么需要自定义 error 类型?

在日常开发中,返回自定义 error 类型是一种很常见的做法,因为很多场景下标准库 errors 包中的 error 类型并不能满足需求。例如开发 web 项目时,常见的返回结构可能如下:

{"code":xxx, "data":yyy,"msg":"zzz"}

code 为状态码,data 为接口返回的业务数据,msg 为错误信息。针对这种响应结构,一般做法是调用处理业务逻辑的函数或方法,返回业务数据和 error,然后在 api 层拼装成这种结构。所以 error 对象至少要包含状态码 code 和错误信息 msg,这时候就需要实现自己的 error 类型了。

如何实现自定义 error 类型?

在 Golang 中,可以通过创建一个实现了 error 接口(该接口仅包含一个 Error 方法)的结构体来返回自定义的 error 类型。自定义的 error 类型可以包含自己定义的字段和方法,以提供更多的错误信息和上下文信息。看一个示例来展示如何创建和返回自定义 error 类型:

package mainimport ("errors""fmt"
)// 自定义的错误类型
type MyError struct {code int64msg  string
}// 实现error接口的Error方法
func (e MyError) Error() string {return fmt.Sprintf("Error: [%d] %s", e.code, e.msg)
}func (e MyError) Code() int64 {return e.code
}func (e MyError) Msg() string {return e.msg
}// 函数示例,返回自定义error类型
func doSomething() error {err := MyError{code: 500,msg:  "Something went wrong",}return err
}func main() {err := doSomething()if err != nil {fmt.Println(err)}// 比较自定义error类型myErr := MyError{code: 500,msg:  "Something went wrong",}equal := errors.Is(err, myErr)fmt.Println(equal) // true
}

在上述示例中,首先定义了一个自定义的 MyError 类型,包含 code 和 msg 两个字段,然后实现 error 接口要求的 Error 方法。

接下来再看一个结合 gin 框架的具体使用示例,简单示例代码如下:

package mainimport ("errors""fmt""github.com/gin-gonic/gin""net/http"
)// 自定义的错误类型
type MyError struct {code int64msg  string
}func NewError(code int64, msg string) MyError {return MyError{code: code,msg:  msg,}
}// 实现error接口的Error方法
func (e MyError) Error() string {return fmt.Sprintf("Error: [%d] %s", e.code, e.msg)
}func (e MyError) GetCode() int64 {return e.code
}func (e MyError) GetMsg() string {return e.msg
}// 函数示例,返回自定义error类型
func doSomething() error {err := MyError{code: 500,msg:  "Something went wrong",}return err
}func FromError(err error) MyError {if err == nil {return NewError(1, "")}if !errors.As(err, &MyError{}) {return NewError(-1, "")}return err.(MyError)
}func TestHandler(c *gin.Context) {err := Logic()if err != nil {e := FromError(err)c.JSON(http.StatusOK, gin.H{"code": e.GetCode(), "data": nil, "msg": e.GetMsg()})return}c.JSON(http.StatusOK, gin.H{"code": 1, "data": nil, "msg": ""})
}func Logic() error {return NewError(-1, "something went wrong")
}func main() {r := gin.New()r.GET("/test", TestHandler)r.Run(":8080")
}

小结

通过返回自定义的 error 类型,可以提供更多的错误信息和上下文信息,使错误处理更加灵活和准确,可以根据自己的实际需求和应用场景创建自定义错误类型。

http://www.yayakq.cn/news/284021/

相关文章:

  • 经典的网站设计自适应网站开发框架
  • 网站开发的出路深圳网站设计 建设元
  • 广州10大网站服务品牌自己做的网站如何包装
  • 怎么选择手机网站建设广告设计服务
  • 网站备案负责人 更换网站邮箱配置
  • 网页设计与网站建设期末考试做视频采集网站犯法
  • 中国最大的网站建设公司中国建设银行官企业网站
  • 广州做网站星珀郑州网站制作服务
  • 广西网站建设哪家强浙江外发加工网
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题好的app设计网站
  • 深圳企业网站seo小程序源码提取工具
  • 科技园区建设网站的意义建一个网站需要多少费用
  • 福永网站建设多少钱漳州专业网站建设价格
  • 响应式网站模版下载wordpress文本插件
  • 马鞍山钢铁建设集团有限公司网站鸿扬家装网站建设
  • 哈尔滨开发网站wordpress固定链接文章别名
  • 网站部兼容ie6移动互联网技术学什么
  • 台州网站制作公司内蒙古网站建设电话
  • 商丘做网站优化门户资源分享网站模板
  • 网站的建设特色券多多是谁做的网站
  • 自建网站过程站长工具seo综合查询排名
  • cvm可以做网站服务器吗wordpress设置icon
  • 如何利用个人nas做网站一帘幽梦紫菱做的网站
  • 网站结构分析具体分析内容十大接单推广平台
  • 代做论文网站一个虚拟主机可以做两个网站吧
  • 网站域名续费沈阳搜索排名公司
  • 天津个人做网站中山网站建设文化信息
  • 网络营销推广主要做什么?有哪些方法和技巧?怎么把做的网站优化到百度
  • 自己做的网站怎么上传文章平面设计到底要学什么
  • 网站建设介绍文字网站制作建设模板