首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go语言的错误处理的推荐方案

对于Go语言(golang)的错误设计,相信很多人已经体验过了,它是通过返回值的方式,来强迫调用者对错误进行处理,要么你忽略,要么你处理(处理也可以是继续返回给调用者),对于golang这种设计方式,我们会在代码中写大量的判断,以便做出决定。

这类代码,在我们编码中是非常的,大部分情况下都是,也就是没有任何错误,但是非的时候,意味着错误就出现了,我们需要对他进行处理。

error 接口

其实一个接口,内置的,我们看下它的定义

它只有一个方法 ,只要实现了这个方法,就是实现了。现在我们自己定义一个错误试试。

自定义 error

自定义了一个类型,实现了接口。现在测试下看看效果。

我们运行模拟的代码,可以看到的通知。

在实际的使用过程中,我们可能遇到很多错误,他们的区别是错误信息不一样,一种做法是每种错误都类似上面一样定义一个错误类型,但是这样太麻烦了。我们发现返回的其实是个字符串,我们可以修改下,让这个字符串可以设置就可以了。

恩,这样改造后,我们就可以在声明的时候,设置好要提示的错误文字,就可以满足我们不同的需要了。

恩,可以了,已经达到了我们的目的。现在我们可以把它变的更通用一些,比如修改的名字,再创建一个辅助函数,便于我们创建不同的错误类型。

变成以上这样,我们就可以通过函数,辅助我们创建不同的错误了,这其实就是我们经常用到的函数,被我们一步步剖析演化而来,现在大家对Go语言(golang)内置的错误有了一个清晰的认知了。

存在的问题

虽然Go语言对错误的设计非常简洁,但是对于我们开发者来说,很明显是不足的,比如我们需要知道出错的更多信息,在什么文件的,哪一行代码?只有这样我们才更容易的定位问题。

还有比如,我们想对返回的附加更多的信息后再返回,比如以上的例子,我们怎么做呢?我们只能先通过方法,取出原来的错误信息,然后自己再拼接,再使用函数生成新错误返回。

如果我们以前做过java开发,我们知道Java的异常是可以嵌套的,也就是说,通过这个,我们很容易知道错误的根本原因,因为Java的异常,是一层层的嵌套返回的,不管中间经历了多少包装,我们可以通过找到根本错误的原因。

解决问题

如果要解决以上的问题,那么首先我们必须再继续扩充我们的,再增加一些字段来存储更多的信息。比如我们要记录堆栈信息。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190102B05NUY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券