错误处理通常有以下几种方式

 

继续传递

这是很常见的一种情况,例如你的函数中依赖某个必须的数据源,当获取相应数据失败时,将失败信息直接返回是一种最简单的处理方式

 

 

追加信息后返回

针对上面的情况,我们可能不知道一场发生的具体时机,那么外层增加一些信息后返回看上去就是一个很好的选择

 

 

这在 GoLang 中是非常常见的,因此,规范建议不要将错误信息的首字母大写,因为他们可能被嵌套在外层信息之中,同时,为了在 log 中更好地定位报错信息,建议不要在错误信息中换行

 

直接中止程序执行

通常这样的处理方式发生在主程序部分

 

 

此时日志中会打印出:

2019/11/17 15:04:05 Site is down: parsing techhlog.cn error: socket timeout

 

继续执行

对于非关键异常,仅记录异常发生,不做任何处理有时是正确的处理方式

 

 

一个典型的例子是文件读取,我们必须检测 error 参数,判断是否读取到了文件的末尾,从而判断是否需要中止继续进行读写

 

 

完全忽略异常的发生

通常不建议忽略函数显式返回的 error 参数

可以通过占位符 "_" 来实现相应参数的忽略