写在前面的话:Go语言提供了一个error类型,专门用来表示程序出现异常的错误信息。但是有时候,error本身提供的这些错误信息不能完全满足我们的要求,这种情况下我们就需要自己去改造error,来实现自己希望的error格式以及内容。

下面笔者主要来讲下这件事情,不过在讲这之前,我们先看下error的定义吧。

1. error介绍

error其实就是实现了Error()函数的一个接口,返回值 nil表示是成功,例子如下所示:

Output:

结果分析:因为没有go.txt这个文件,所以在尝试打开这个文件的时候,会返回错误信息“文件不存在”的非nil信息。(备注:Println能够打印出来错误信息,是因为Println函数调用了error里面的Error()函数。)

2. 自定义错误

2.1. 通过New()来自定义错误信息

在Go的errors包中实现了New()这个函数,所以我们能够直接使用New()函数来自定义我们希望的错误输出,例子如下所示:

有了上面的实现,我们便可以自定义错误信息了,例子如下所示:

结果分析:通过输出结果,我们可以看出来,我们自定义的错误信息"error:自定义错误信息!!!"可以成功的打印出来。

2.2.借助struct来实现error更多内容

我们可以采用struct来实现error这个接口,进而达到实现自定义错误信息的方式。例子如下:

结果分析:通过输出的结果我们可以看出来,对于我们自定义的错误码和错误信息都可以打印出来。这也就表明,如果我们希望去扩展error的其他信息,那么我们可以采用struct的方式去添加不同的属性来实现。


灰子学技术:

Go语言之error相关推荐

  1. R语言std.error函数计算平均值的标准误差实战

    R语言std.error函数计算平均值的标准误差实战 目录 R语言std.error函数计算平均值的标准误差实战 #手动编码标准误差计算

  2. c语言中error c2109 是什么错,求c语言改错 error C2109: 下标要求数组或指针类型?...

    求c语言改错 error C2109: 下标要求数组或指针类型? /*魔方阵*/ #include int main() { int i,j,a,n; int arr[100][100]; print ...

  3. c语言declared void,c语言求助 [Error] variable or field 'RRR2' declared void

    已结贴√ 问题点数:20 回复次数:3 c语言求助 [Error] variable or field 'RRR2' declared void #include "stdio.h" ...

  4. go语言 Accept error: accept tcp [::]:5551: too many open files;

    2019独角兽企业重金招聘Python工程师标准>>> 在使用go语言请求服务器的时候,在一个for循环内使用http.post所引发的错误是:Accept error: accep ...

  5. C语言之#error/#warning

    很多人写了一两年代码可能也没用过#error和#warning吧!我也是如此,因为我之前也不知道C语言中还有这玩意的存在,还是在看别人的代码后才知道有这个东西的.但是事实上你在编译代码的时候它们经常会 ...

  6. GO语言-自定义error

    目录 前言 内置包创建错误对象 自定义error接口的实现 前言 error是go语言中的一种数据类型,内置接口.定义了一个方法Error() string error接口 error接口的实现--e ...

  7. c语言 安装初始化错误,错误:初始化元素不是常量(c语言)(Error: Initializer Element is not constant (c language))...

    错误:初始化元素不是常量(c语言)(Error: Initializer Element is not constant (c language)) 这是一个存储公式的.h文件,但是它给出了你在第16 ...

  8. 聊一聊Go语言的error处理

    前言 Go语言的错误处理是一个常见的操作,经常可以见到一个函数返回错误类型(error),后续通过if err != nil来判断错误以及错误类型.这一次尝试通过Go内置的error接口,聊一聊Go语 ...

  9. C语言下标要求数组或指针,c语言改错 error C2109: 下标要求数组或指针类型怎么改?...

    /*魔方阵*/ #include int main() { int i,j,a,n; int arr[100][100]; printf("请输入n,n为100内奇数\n"); s ...

  10. c语言 linker error,[Linker error] undefined reference to `prinf'的问题!

    [Linker error] undefined reference to `prinf'的问题! 环境为dev-cpp 日志如下: 编译器: Default compiler 执行 gcc.exe. ...

最新文章

  1. 服务器租用之服务器带宽情况分析
  2. 代码压缩、生成二维码
  3. Redis 缓存常见问题:缓存一致性的解决方案
  4. js日期比较大小_node.js 内存泄漏的秘密
  5. linux df命令无反馈,Linux-df命令
  6. python每隔几秒执行一次_Python设置程序等待时间
  7. 外推主要发布平台(JM)
  8. 企业版mysql怎么装_RedHat企业版5.5下Mysql的安装与配置
  9. (一) Qt Model/View 的简单说明
  10. 关于AE大数据点文件读取生成SHP文件时使用IFeatureBuffer快速提高读取效率
  11. VLAN的分类与实验
  12. Java之编写FlyBird小游戏
  13. ABB焊接机器人伺服电机维修常见故障
  14. mysql-front 8.0_使用SQL-Front启动MySQL8.0报错
  15. 均方根误差(RMSE),平均绝对误差(MAE),标准差(Standard Deviation)的对比
  16. 软考网络规划设计师知识点总结--第一章(计算机网络概论)
  17. node.js学习的资源整理
  18. hrnet转onnx
  19. 纪委正调查计算机学院院长,网曝湖北文理学院招办领导受贿 学院纪委:正在调查...
  20. 方便易拆信封设计制作

热门文章

  1. DrGraph - SVG模块之一:显示与节点选择
  2. Java作业-圆柱体积
  3. 电脑中缺少dll文件怎么解决?电脑dll文件要怎么打开?
  4. 在有C语言的基础上,快速学习python(C语言转战python)(python3)
  5. 软件开发量评估法之一---德尔菲评估法
  6. 树莓派监测CPU温度
  7. 计算机科学与技术用惠普星15,11代酷睿满血出击 快来GET蔡徐坤同款惠普星14吧...
  8. SD卡、TF卡、MMC卡以及eMMC芯片的介绍
  9. 光波叠加matlab,光波的叠加教程.ppt
  10. Bazel入门:编译C++项目